grafana+promethus+jmx_export监控jvm
使用一个小demo模拟jvm进程,并开启jmx端口8077
public class Hello{
/**
-Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=192.168.129.112 -Dcom.sun.management.jmxremote.port=8077 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
*/
public static void main(String[] args)
throws InterruptedException
{
Thread.sleep(3 * 3600 * 1000);
}
}
-
下载并启动jmx_export组件
下载https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar
本文使用0.3.1版本,因为grafana里现成的面板模板很多都是基于老版本的,新版本修改了标签名称会无法在grafana里显示出来。
两种启动方式,两种jar
官网有使用说明https://github.com/prometheus/jmx_exporter
一、和程序一起启动(官网推荐)
在程序启动命令中增加-javaagent参数指定jar、端口为12345和config.yaml
-javaagent:/root/jmx_prometheus_javaagent-0.3.1.jar=12345:/root/config.yaml
最小config.yaml如下
rules: - pattern: ".*"
完整命令如下:
java -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=192.168.129.112 -Dcom.sun.management.jmxremote.port=8078 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticatealse -javaagent:/root/jmx_prometheus_javaagent-0.3.1.jar=12345:/root/config.yaml Hello
二、程序外部单独httpserver方式启动
单独启动jmx_export为http然后将jvm程序的jmx端口配置在config.yaml中
java -jar jmx_prometheus_httpserver-0.3.1.jar 12345 config.yaml
最小config.yaml
localhost:8077 rules: - pattern: ".*"
验证jmx_export是否成功配置
访问http://192.168.129.112:12345 ,查看是否有metrics数据
-
配置promethus
vi prometheus.yml增加job配置
- job_name: 'jmxtest'
scrape_interval: 5s
static_configs:
- targets: ['192.168.129.112:12345']
重启promethus后,测试是否能查询到jmx数据
3. # 在grafana导入监控面板
job要填写promethus里配置的job_name
最终效果