性能测试监控平台搭建-jxm_exporter(七)
7.jxm_exporter实现对java程序的监控
7.1 下载jmx_exporter相关的jar包
官方地址:https://github.com/prometheus/jmx_exporter
官方的历史版本下载库地址:https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/
7.2 jxm_exporter的使用
7.2.1 创建 jar包的保存位置
[root@master ~]# mkdir -p /opt/app/jmx_prometheus_javaagent
7.2.2 下载对应的jar包
[root@master ~]# cd /opt/app/jmx_prometheus_javaagent
[root@master jmx_prometheus_javaagent]# wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/1.0.1/jmx_prometheus_javaagent-1.0.1.jar
--2024-10-14 21:05:30-- https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/1.0.1/jmx_prometheus_javaagent-1.0.1.jar
正在解析主机 repo1.maven.org (repo1.maven.org)... 146.75.92.209, 2a04:4e42:87::209
正在连接 repo1.maven.org (repo1.maven.org)|146.75.92.209|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2886599 (2.8M) [application/java-archive]
正在保存至: “jmx_prometheus_javaagent-1.0.1.jar”
100%[=============================================================================================================================================================================>] 2,886,599 48.6KB/s 用时 36s
2024-10-14 21:06:07 (78.0 KB/s) - 已保存 “jmx_prometheus_javaagent-1.0.1.jar” [2886599/2886599])
7。2.3 创建采集数据配置的yaml文件
[root@master jmx_prometheus_javaagent]# vim config.yaml
config.yaml文件内容如下:
rules:
- pattern: ".*"
7.2.4 使用方式
这里使用一个math-game.jar的为例,演示使用方式
格式 java -javaagent:{jmx_export.jar本机绝对路径}=自定义端口:{config.yaml本机绝对路径} -jar 需要监控的jar包
# 进入到 math-game的目录
[root@master jmx_prometheus_javaagent]# cd
[root@master ~]# cd /opt/app/math-game/
[root@master math-game]# ll
总用量 8
-rw-r--r-- 1 root root 4120 10月 14 20:30 math-game.jar
# 启动math-game,同时 javaagent 调用 jmx_exporter的包
[root@master math-game]# java -javaagent:/opt/app/jmx_prometheus_javaagent/jmx_prometheus_javaagent-1.0.1.jar=39081:/opt/app/jmx_prometheus_javaagent/config.yaml -jar math-game.jar
启动后,在浏览器执行 http://10.0.0.100:39081/metrics 可以看到对应的内容展示
修改prometheus的配置文件,用于添加对jmx_exporter的数据收集,在安装prometheus的目录下找到prometheus.yml的配置文件
[root@master ~]# cd /opt/app/prometheus-2.53.2/
[root@master prometheus-2.53.2]# ll
总用量 261328
drwxr-xr-x. 2 root root 38 8月 9 23:13 console_libraries
drwxr-xr-x. 2 root root 173 8月 9 23:13 consoles
drwxr-xr-x. 6 root root 138 10月 11 19:43 data
-rw-r--r--. 1 root root 11357 8月 9 23:13 LICENSE
-rw-r--r--. 1 root root 3773 8月 9 23:13 NOTICE
-rwxr-xr-x. 1 root root 137838575 8月 9 22:56 prometheus
-rw-r--r--. 1 root root 950 10月 11 16:14 prometheus.yml
-rwxr-xr-x. 1 root root 129735160 8月 9 22:56 promtool
-rw-r--r--. 1 root root 45 10月 11 16:11 reload-prometheus.sh
# 修改配置文件添加node_exporter的数据收集信息
[root@master prometheus-2.53.2]# vim prometheus.yml
在prometheus.yml文件中进行修改,在最后追加 jxm_exporter部分的jobname
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
static_configs:
- targets: ["10.0.0.100:9090"]
- job_name: "node_exporter"
static_configs:
- targets: ["10.0.0.100:9100"]
- job_name: "mysqld_exporter"
static_configs:
- targets: ["10.0.0.100:9104"]
- job_name: "jmx_exporter"
static_configs:
- targets: ["10.0.0.100:39081"]
对prometheus进行热加载修改的配置
[root@master prometheus-2.53.2]# curl -X POST http://10.0.0.100:9090/-/reload
通过浏览器地址访问 http://10.0.0.100:9090 的地址访问(ip地址使用实际的地址),在Status->Targets 下 看到 jmx_exporter启动成功的记录