Prometheus 采集 JVM 数据

发布于:2025-02-11 ⋅ 阅读:(103) ⋅ 点赞:(0)

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
(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 性能监控面板。

网站公告

今日签到

点亮在社区的每一天
去签到