这里是小奏,觉得文章不错可以关注公众号小奏技术
JVM监控选型
本次JVM监控我们采用prometheus
官方提供的jmx_exporter
来实现
RocketMQJVM开发
整体目录
1. 新增agent
目录
我们在distribution
目录新增一个agent
模块,然后添加两个文件
- jmx_prometheus_javaagent-1.0.1.jar
- 新增
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.部署
- 重新编译
RocketMQ
源码
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install
- 执行启动脚本
- 通过
ps -ef|grep java
查看agent
是否在启动脚本中 - 访问
http://localhost:9100/metrics
查看监控数据。服务器记得开通9100端口
5. 效果
效果和之前说的类似
总结
总的来说java
应用都支持使用prometheus
官方提供的jmx_exporter
这个agent
来实现JVM的监控。我们只需要修改一下脚本把agent
挂载上去即可