跳到主要内容

RocketMQ如何添加JVM监控

这里是小奏,觉得文章不错可以关注公众号小奏技术

JVM监控选型

本次JVM监控我们采用prometheus官方提供的jmx_exporter来实现

RocketMQJVM开发

整体目录

alt text

1. 新增agent目录

我们在distribution目录新增一个agent模块,然后添加两个文件

  1. jmx_prometheus_javaagent-1.0.1.jar
  2. 新增config.yaml文件

config.yaml文件内容如下:

lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
blacklistObjectNames: []
rules:
- pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'
name: os_$1_bytes
type: GAUGE
attrNameSnakeCase: true
- pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
name: os_$1
type: GAUGE
attrNameSnakeCase: true

2. 修改release.xml打包脚本

release.xml中新增agent模块的打包配置

            <includes>
<include>conf/**</include>
<include>benchmark/*</include>
<include>agent/*</include>
</includes>

3. 修改启动脚本mqbroker

export ROCKETMQ_HOME下面新增如下代码

JMX_PROMETHEUS_AGENT="-javaagent:$ROCKETMQ_HOME/agent/jmx_prometheus_javaagent-1.0.1.jar=9100:$ROCKETMQ_HOME/agent/config.yaml"

sh ${ROCKETMQ_HOME}/bin/runbroker.sh后面新增如下代码

${JMX_PROMETHEUS_AGENT}

自此我们的JVM监控agent就开发完成了。

4.部署

  1. 重新编译RocketMQ源码
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install
  1. 执行启动脚本
  2. 通过ps -ef|grep java查看agent是否在启动脚本中
  3. 访问http://localhost:9100/metrics 查看监控数据。服务器记得开通9100端口

5. 效果

效果和之前说的类似

alt text

总结

总的来说java应用都支持使用prometheus官方提供的jmx_exporter这个agent来实现JVM的监控。我们只需要修改一下脚本把agent挂载上去即可