当前位置: 首页 > article >正文

Prometheus 采集 JVM 数据

Prometheus 采集 JVM 数据通常通过集成 JMX Exporter(Java Management Extensions Exporter)实现。以下是完整的介绍和操作步骤:


1. 原理概述

  • JVM 数据采集依赖于 JMX(Java Management Extensions),JVM 提供了一些标准的 JMX MBeans,用于监控堆内存、线程、GC 等指标。
  • JMX Exporter 是一个工具,它将 JMX 提供的指标转换为 Prometheus 可读取的格式,暴露在 HTTP /metrics 接口上。
  • Prometheus 定时拉取该接口,存储和分析 JVM 性能数据。

2. 实现步骤

(1)下载 JMX Exporter
  • 获取 JMX Exporter 的 jar 包:
    1. 前往 JMX Exporter 的 GitHub 页面。
    2. 下载最新版本的 jmx_prometheus_javaagent-X.Y.Z.jar
(2)配置 JMX Exporter
  1. 创建配置文件: 配置文件用于定义需要暴露的 JVM 指标,可以参考以下示例 config.yaml

    startDelaySeconds: 0
    lowercaseOutputName: true
    lowercaseOutputLabelNames: true
    rules:
      - pattern: ".*"
    
    • startDelaySeconds:延迟启动的秒数。
    • rules:规则,用于定义哪些 JMX 指标需要暴露。.* 表示暴露所有指标。
  2. 启动 JVM 应用程序: 将 jmx_prometheus_javaagent.jar 作为 Java Agent 加载,示例:

    java -javaagent:/path/to/jmx_prometheus_javaagent-<version>.jar=8080:/path/to/config.yaml -jar your-app.jar
    
    • 8080 是 JMX Exporter 暴露的 HTTP 端口。
    • config.yaml 是配置文件路径。
(3)配置 Prometheus

在 Prometheus 的 prometheus.yml 文件中,添加 JVM 数据采集目标:

scrape_configs:
  - job_name: 'jvm'
    static_configs:
      - targets: ['localhost:8080']
(4)启动 Prometheus 和 JVM 应用程序
  • 启动后,Prometheus 会定时从 http://localhost:8080/metrics 采集 JVM 数据。

3. 可采集的 JVM 指标

通过 JMX Exporter,可以采集到以下常见的 JVM 指标:

(1)内存相关
  • jvm_memory_bytes_used:堆内存使用量。
  • jvm_memory_bytes_committed:JVM 已分配的内存。
  • jvm_memory_bytes_max:堆的最大内存。
  • jvm_memory_bytes_init:初始化的堆内存大小。
(2)垃圾回收(GC)
  • jvm_gc_collection_seconds_count:GC 执行次数。
  • jvm_gc_collection_seconds_sum:GC 总耗时。
  • 垃圾回收类型:G1 Young GenerationG1 Old Generation
(3)线程
  • jvm_threads_current:当前活动线程数。
  • jvm_threads_daemon:当前守护线程数。
  • jvm_threads_peak:历史最大线程数。
(4)类加载
  • jvm_classes_loaded:当前加载的类数量。
  • jvm_classes_unloaded:已卸载的类总数。
(5)CPU
  • process_cpu_seconds_total:进程的 CPU 使用总时间。
  • system_cpu_seconds_total:系统的 CPU 使用总时间。

4. 可视化 JVM 数据

  • 使用 Grafana 配合 Prometheus 展示 JVM 数据。
  • 导入现成的 JVM 监控仪表盘:
    • 前往 Grafana Dashboard。
    • 搜索 JVM (Micrometer) Dashboard,导入 ID 为 4701 的仪表盘。

5. 示例场景

假设你在运行一个 Java Web 应用(如 Spring Boot),需要监控其性能指标:

  1. 下载 jmx_prometheus_javaagent.jar 并配置。
  2. 修改应用启动命令,加载 Java Agent:
    java -javaagent:/path/to/jmx_prometheus_javaagent-0.17.2.jar=8080:/path/to/config.yaml -jar my-app.jar
    
  3. 配置 Prometheus 的 prometheus.yml
    scrape_configs:
      - job_name: 'spring_boot'
        static_configs:
          - targets: ['localhost:8080']
    
  4. 启动 Prometheus 并导入 Grafana 仪表盘,开始监控 JVM 指标。

6. 总结

  • JMX Exporter 是 Prometheus 集成 JVM 性能监控的标准工具。
  • 它将 JMX 提供的指标转换为 Prometheus 格式,方便采集和分析。
  • 可监控堆内存、GC、线程、CPU 等关键指标,适用于任何 Java 应用程序。
  • 配合 Grafana,可以轻松构建丰富的 JVM 性能监控面板。

http://www.kler.cn/a/463731.html

相关文章:

  • 企业为何需要小型语言模型:AI 应用的新趋势与策略
  • java实验4 反射机制
  • 呼叫中心中间件实现IVR进入排队,判断排队超时播放提示音
  • 在虚幻引擎4(UE4)中使用蓝图的详细教程
  • 运维人员的Go语言学习路线
  • 【工具推荐】XSS 扫描器-XSStrike
  • 从0到机器视觉工程师(二):封装调用静态库和动态库
  • 重启ubuntu服务器,如何让springboot服务自动运行
  • 【SQL Server】教材数据库(1)
  • Javascript数据结构常见题目(一)
  • Harmony OS 开发-ArkUI框架速成一
  • 【深度学习】多目标融合算法—样本Loss提权
  • 2024 年发布的 Android AI 手机都有什么功能?
  • springboot529基于JavaWeb的本科生交流培养管理平台的设计与实现(论文+源码)_kaic
  • C++:Windows 多线程 简单示例
  • Ubuntu 24.04安装和使用WPS 2019
  • 2412d,d语言中写汇编
  • 机器学习 LightGBM 算法原理解析
  • QT---------GUI程序设计基础
  • Linux下Shell编程之sed命令详解及示例
  • C#语言的字符串处理
  • 上位机开发 的算法与数据结构
  • ƒ () { [native code] } 的解释
  • Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
  • c#枚举和结构体类型详解
  • 【2024年-6月-28日-开源社区openEuler实践记录】探索 easy - software:简化软件部署与管理的开源方案