linux上使用JMX Exporter结合prometheus(二)
prometheus
Prometheus是一个开源的监控和警报工具,用于监控Kubernetes应用程序和云基础设施的性能和可用性。 - 功能:监控;警报;性能管理;可用性管理;Kubernetes应用程序管理。 - 特点:高可用性;高性能;灵活的数据采集;与Kubernetes集成。
项目地址:https://gitcode.com/gh_mirrors/pr/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 应用的日志
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 天前
更多推荐
已为社区贡献2条内容
所有评论(0)