Prometheus监控Java-JMX
创始人
2024-05-24 06:11:40
0

一、什么是 JMX Exporter ?

JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。

那么,JMX 又是什么呢?它的全称是:Java Management Extensions。 顾名思义,是管理 Java 的一种扩展框架,JMX Exporter 正是基于此框架来读取 JVM 的运行时状态的。

二、如何使用 JMX Exporter 暴露 JVM 监控指标 ?

下面介绍如何通过 JMX Exporter 来暴露 Java 应用的 JVM 监控指标。

JMX Exporter 的两种用法

JMX-Exporter 提供了两种用法:

  1. 启动独立进程。JVM 启动时指定参数,暴露 JMX 的 RMI 接口,JMX-Exporter 调用 RMI 获取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。
  2. JVM 进程内启动(in-process)。JVM 启动时指定参数,通过 javaagent 的形式运行 JMX-Exporter 的 jar 包,进程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。

官方不推荐使用第一种方式,一方面配置复杂,另一方面因为它需要一个单独的进程,而这个进程本身的监控又成了新的问题,所以本文重点围绕第二种用法讲如何使用 JMX Exporter 暴露 JVM 监控指标给Prometheus并展示在Grafana上。

三、部署

1、下载jmx javaagent

mkdir /usr/local/jmx_exporter
cd /usr/local/jmx_exporter
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar

2、配置

#配置 
cd /usr/local/jmx_exportercat > /usr/local/jmx_exporter/jmx_config.yaml << EOF
---
rules:- pattern: ".*"
EOF#完整配置参考:https://github.com/prometheus/jmx_exporter/
---
startDelaySeconds: 0
hostPort: 127.0.0.1:1234
username: 
password: 
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
whitelistObjectNames: ["org.apache.cassandra.metrics:*"]
blacklistObjectNames: ["org.apache.cassandra.metrics:type=ColumnFamily,*"]
rules:- pattern: 'org.apache.cassandra.metrics<>Value: (\d+)'name: cassandra_$1_$2value: $3valueFactor: 0.001labels: {}help: "Cassandra metric $1 $2"cache: falsetype: GAUGEattrNameSnakeCase: false

3、启动jar包

nohup java  -javaagent:/jmx/jmx_prometheus_javaagent-0.17.2.jar=8899:/jmx/jmx_config.yaml -jar /jmx/datamigration-0.0.1-SNAPSHOT.jar --server.port=8090 --spring.config.location=/jmx/config/application.properties >> /jmx/local.log 2>&1 &

3.1、验证

在这里插入图片描述

配置prometheus

scrape_configs:- job_name: 'java_jmx'static_configs:- targets: ['yourIP:javagent端口']

4、重启或热加载配置并验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gomVpNGR-1675931002752)(/Users/hanwang/Library/Application Support/typora-user-images/image-20230209154000523.png)]

5、配置grafana

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlowINwq-1675931002752)(/Users/hanwang/Library/Application Support/typora-user-images/image-20230209154341372.png)]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...