使用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总次数恢复正常"

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值