一、JMX Exporter是什么

Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据。它是 Prometheus 官方组件,作为一个JAVA Agent 来提供本地 JVM 的 metrics,并通过 http 暴露出来。这也是官方推荐的一种方式,可以获取进程的信息,比如CPU和内存使用情况。

JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,以代理的形式收集目标应用的 JMX 指标,这样做的好处在于无需对目标应用做任何的改动。然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。

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

本文将介绍如何利用 Prometheus 与 JMX Exporter 来监控你 Java 应用的 JVM。

二、JMX Exporter 的两种用法

1、启动独立进程。JVM 启动时指定参数,暴露 JMX 的 RMI 接口,JMX Exporter 调用 RMI 获取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。
2、VM 进程内启动(in-process)。JVM 启动时指定参数,通过 JAVA Agent 的形式运行 JMX Exporter 的 jar 包,进程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。
官方不推荐使用第一种方式,一方面配置复杂,另一方面因为它需要一个单独的进程,而这个进程本身的监控又成了新的问题。

下载JMX Exporter

github地址:GitHub - prometheus/jmx_exporter: A process for exposing JMX Beans via HTTP for Prometheus consumption
# 新建目录
mkdir -p /data/prometheus/jmx_exporter
# 进入目标目录
cd /data/prometheus/jmx_exporter
# 下载最新jmx_exporter:
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.0/jmx_prometheus_javaagent-0.16.0.jar

配置JMX Exporter

# 所在目录
cd /data/prometheus/jmx_exporter
# 新建配置文件simple-config.yml
vim simple-config.yml

#内容如下
---
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
rules:
 - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
   name: os_$1
   type: GAUGE
   attrNameSnakeCase: true

 

三、添加 Prometheus 监控配置

# 进入 prometheus 文件夹
cd /data/prometheus/prometheus-2.28.1.linux-amd64
# 编辑 prometheus 配置文件
vim prometheus.yml

# 添加内容如下
- job_name: 'java'
    scrape_interval: 30s
    static_configs:
    - targets: ['localhost:30100']
    
# 重启prometheus
/etc/init.d/prometheus-server restart

四、部署 java 应用

nohup java -javaagent:/data/prometheus/jmx_exporter/jmx_prometheus_javaagent-0.16.0.jar=30100:/data/prometheus/jmx_exporter/simple-config.yml -jar /mnt/baimao/sim/sim.jar >> /mnt/baimao/logs/sim.out 2>&1 &
# 参数注释
# -javaagent:/data/prometheus/jmx_exporter/jmx_prometheus_javaagent-0.16.0.jar=30100 表示 JMX Exporter 的代理端口为30100
# :/data/prometheus/jmx_exporter/simple-config.yml 表示 JMX Exporter 的配置文件
# /mnt/baimao/sim/sim.jar 表示 java 应用的位置
# /mnt/baimao/logs/sim.out 表示 java 应用的日志

GitHub 加速计划 / pr / prometheus
6
0
下载
Prometheus是一个开源的监控和警报工具,用于监控Kubernetes应用程序和云基础设施的性能和可用性。 - 功能:监控;警报;性能管理;可用性管理;Kubernetes应用程序管理。 - 特点:高可用性;高性能;灵活的数据采集;与Kubernetes集成。
最近提交(Master分支:3 个月前 )
5b5fee08 PromQL: improve some test comments 2 天前
f7373a1f This amends #15686. Signed-off-by: beorn7 <beorn@grafana.com> 2 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐