关于java:使用JMX-Exporter监控Rainbond上的Java应用

46次阅读

共计 2317 个字符,预计需要花费 6 分钟才能阅读完成。

场景

Prometheus 社区开发了 JMX Exporter 用于导出 JVM 的监控指标,以便应用 Prometheus 来采集监控数据。当您的 Java 利用部署在 Rainbond 上后

可通过本文理解部署在 Rainbond 上的 Java 利用如何应用 JMX Exporter 裸露 JVM 监控指标。

JMX Exporter 简介

Java Management Extensions,JMX 是治理 Java 的一种扩大框架,JMX Exporter 基于此框架读取 JVM 的运行时状态。JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的监控数据,而后将其转换为 Prometheus 可辨识的 metrics 格局,让 Prometheus 对其进行监控采集。

JMX Exporter 提供 启动独立过程 JVM 过程内启动(in-process) 两种形式裸露 JVM 监控指标:

启动独立过程

JVM 启动时指定参数,裸露 JMX 的 RMI 接口。JMX Exporter 调用 RMI 获取 JVM 运行时状态数据,转换为 Prometheus metrics 格局,并裸露端口让 Prometheus 采集。

JVM 过程内启动(in-process)

JVM 启动时指定参数,通过 javaagent 的模式运行 JMX Exporter 的 jar 包,过程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格局,并裸露端口让 Prometheus 采集。

官网不倡议应用 启动独立过程 形式,该形式配置简单且需独自的过程,过程自身的监控又引发了新的问题。本文以 JVM 过程内启动(in-process) 形式为例,在 Rainbond 中应用 JMX Exporter 裸露 JVM 监控指标。

在 Rainbond 上应用 JMX Exporter

在 Rainbond 上对于构建类型不同的组件有不同的解决形式,如下

通过源码构建的 Java 利用

自 V5.3 版本后通过 Rainbond 源码构建的 JAVA 利用,默认都会将 JMX Exporter 打包,用户应用时只需增加环境变量开启即可。

  1. 为 JAVA 服务组件增加一个指定的环境变量 ES_ENABLE_JMX_EXPORTER = true,即可开启 jmx_exporter
  2. 在 JAVA 服务组件的端口管理处增加一个 5556 端口,这是 jmx_exporter 默认监听的端口。

通过镜像构建的 Java 利用

对于镜像或利用市场构建的利用,能够应用初始化类型的插件实现注入 jmx_agent

往期文章中具体解说过其实现原理,能够参考:Rainbond 通过插件整合 SkyWalking,实现 APM 即插即用 Agent 插件实现原理局部

  • 构建 jmx_exporter 插件

进入团队 -> 插件 -> 新建插件,创立初始化类型插件,源码地址:https://github.com/goodrain-a…

插件构建胜利后即可应用,为 JAVA 服务组件开明此插件即可。

  • 挂载存储

为 JAVA 服务组件挂载存储 /tmp/agent,使其能够与插件共享存储。

通过共享存储,初始化插件将所需的配置文件以及 Agent 放在共享存储中供主服务应用,实现服务无侵入。

  • 增加环境变量

为 JAVA 服务组件增加环境变量 JAVA_OPTS = -javaagent:/tmp/agent/jmx_prometheus_javaagent-0.16.1.jar=5556:/tmp/agent/prometheus-jmx-config.yaml

可挂载配置文件 /tmp/agent/prometheus-jmx-config.yaml 替换现有的配置文件。

  • 增加端口

在组件的端口管理处,增加新的端口 5556

最初更新组件即可失效。

增加利用监控点

利用监控是基于 rbd-monitor 实现,当咱们增加了监控点后就相当于创立了一个 servicemonitor

进入组件内 -> 监控 -> 业务监控 -> 治理监控点,新增监控点,填写以下信息:

  • 配置名:自定义
  • 收集工作名称:自定义
  • 收集间隔时间:10 秒
  • 指标门路:/metrics
  • 端口号:抉择 jmx_exporter 端口

增加完后更新组件使其失效。

增加监控图表

接下来就能够增加一个监控图表,来展现 JAVA 服务组件中 JVM 的指标行:

点击业务监控面板上方的 增加图表

输出新的题目,以及对应的查问条件 jvm_memory_bytes_used 后,点击 查问。如果失常返回图表,则阐明查问条件是正确的。题目的定义尽量清晰明了,并在有必要的状况下明确单位。

更多指标可参考 官网文档

扩大 Grafana

可通过grafana 展现,以下简述操作步骤:

  1. 获取 rbd-monitor 服务 CLUSTER IP
$ kubectl get svc -l name=rbd-monitor -n rbd-system

NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
rbd-monitor   ClusterIP   10.43.112.131   <none>        9999/TCP   13d
  1. 在平台上增加第三方服务,填写 rbd-monitor 服务的 CLUSTER IP
  2. 从开源利用商店装置 Grafana并增加依赖。
  3. 进入 Grafana,Configuration -> Add Data Source -> URL 为 http://127.0.0.1:9999,导入 JVM dashboard ID 8878,通过 Grafana 面板展现利用监控信息。

References Link

jmx_export 插件 Github https://github.com/goodrain-a…

jmx_export 官网 https://github.com/prometheus…

jvm dashboard https://grafana.com/grafana/d…

正文完
 0