linux上使用JMX Exporter结合prometheus(二)

一、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 应用的日志

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值