• 使用prometheus监控java服务


    在prometheus官方下载页面没有看到jvm_exproter的下载地址但是官方页面是有推荐下载地址的  访问    Prometheus - Monitoring system & time series database   prometheus官方网址

    官方推荐地址下载是在github网络访问不方便的可以用下面的网址

     wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar

    国内JMX_exporter下载地址

     Central Repository: io/prometheus/jmx/jmx_prometheus_javaagent

    根据需求选择版本这里我使用的是19.0版本

     wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar

    页面的提示中可以看到启动jmx exporter的时候需要有一个config.yaml的文件,config.yaml配置文件的示例在example_configs目录中

    mkdir /data/jmx_exporter   创建存储目录

    cd /data/jmx_exporter/

    wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar

    创建配置文件

    vim config.yaml

    rules:

    - pattern: ".*"

    Jmx_exporter启动命令

    java -javaagent:jmx_prometheus_javaagent-0.19.0.jar=12345:config.yaml -jar OKMInstaller.jar   

    这个OKMInstaller.jar是我从网上随便下载了一个javaweb包运行起来测试监控的

    Download | OpenKM   测试运行的可以自行下载

    启动运行到这一步可以不用管了,到这就可以监控到数据了。

    启动命令格式

    java -javaagent: + jmx-exporter.jar的路径=启动端口 : config.yamll文件路径 + -jar + xxx.jar(被监控的项目jar包路径)

    启动成功后可以来的浏览器访问192.168.197.137:12345/metrics 查看采集的数据

    启动以后来的prometheus来配置

      - job_name: "jvm"

        static_configs:

          - targets: ["192.168.197.137:12345"]

    重启prometheus

    systemctl restart prometheus

    重启完成后来到grafana导入模板我这里推荐模板id10519 有些模块没有数据是因为表达式不匹配,有些我修改过后贴在下面了,还有几个没写可以吧模块删掉就行。

    cpu load 模块表达式需要换成

    sum(rate(java_lang_OperatingSystem_SystemCpuLoad[5m])) * 100

    System load average  模块表达式需要换成

    java_lang_OperatingSystem_SystemLoadAverage{job="$job", instance="$instance"}

    Available CPUs  模块表达式需要换成

    java_lang_OperatingSystem_AvailableProcessors{instance="$instance"}

    Open file descriptors  模块表达式换成

    process_open_fds{instance="$instance"}

    Class loading 模块表达式换成

    jvm_classes_loaded_total{job="$job", instance="$instance"}

    下面是grafana模块标签的含义

    Memory area [heap]:堆内存区域,用于存储对象实例。

    Memory area [noheap]:非堆内存区域,用于存储其他数据结构和元数据。

    Memory pool [Code Cache]:代码缓存池,存储编译后的机器代码。

    Memory pool [Compressed Class Space]:压缩类空间池,存储压缩的类和元数据。

    Memory pool [Metaspace]:元空间池,存储类元数据。

    Memory pool [PS Eden Space]:新生代(Eden)内存池,用于存放新创建的对象。

    Memory pool [PS Old Gen]:老年代内存池,用于存放长时间存活的对象。

    Memory pool [PS Survivor Space]:幸存者空间内存池,用于存放幸存的新生代对象。

    GC count increase:垃圾回收次数的增量。

    GC time:垃圾回收所消耗的时间。

    Threads used:使用的线程数量。

    Class loading:类加载情况的指标,包括已加载的类数量、加载失败的类数量等。

    Physical memory:物理内存的使用情况。

    下面是关于gc总时长告警模板

    #gc总时长告警规则

    groups:

      - name: jvm_gc_time

        rules:

          - alert: GC总时长

            expr: jvm_gc_collection_seconds_sum > 1.0

            for: 30s

            labels:

              severity: warning

            annotations:

              summary: "{{ $labels.instance }} 当前服务gc总时长超过10秒 "

            resolved: "{{ $labels.instance }} 当前主机服务gc时长恢复正常"

    #gc总次数告警规则

        rules:

          - alert: GC总次数

            expr: jvm_gc_collection_seconds_count{gc="PS Scavenge",} > 200

            for: 30s

            labels:

              severity: warning

            annotations:

              description: "{{ $labels.instance }} 当前服务gc总次数超过200次 "

            resolved: "{{ $labels.instance }} 当前主机服务gc总次数恢复正常"

  • 相关阅读:
    前端环境的准备-Vue框架介绍-Vue快速入门
    C++异常
    软件考试:计算机组成原理:程序的运行过程
    Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题
    通过电子文档管理改善患者体验和办公效率
    PPT转PDF转换器:便捷的批量PPT转PDF转换软件
    知识表示学习(五):RotatE
    会员营销中,沉寂会员的三种运营策略
    【云手机】数据安全如何保障?
    Zabbix“专家坐诊”第207期问答汇总
  • 原文地址:https://blog.csdn.net/W1124824402/article/details/133383198