Prometheus监控Jvm

监控JVM

使用prometheus+grafana监控springboot项目jvm状况

环境准备:javascript

  • JDK 8+java

  • Grafanagit

  • Prometheusgithub

一、配置pom

Actuator:web

  • Spring Boot Actuator能够帮助你监控和管理Spring Boot应用,好比健康检查、审计、统计和HTTP追踪等。全部的这些特性能够经过JMX或者HTTP endpoints来得到。spring

Micrometer:docker

  • Micrometer提供了与供应商无关的接口,包括 timers(计时器)gauges(量规)counters(计数器)distribution summaries(分布式摘要)long task timers(长任务定时器)。它具备维度数据模型,当与维度监视系统结合使用时,能够高效地访问特定的命名度量,并可以跨维度深刻研究。shell


       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-actuator</artifactId>
       </dependency>

       <dependency>
           <groupId>io.micrometer</groupId>
           <artifactId>micrometer-registry-prometheus</artifactId>
           <version>2.17.1</version>
       </dependency>

       <dependency>
           <groupId>io.github.mweirauch</groupId>
           <artifactId>micrometer-jvm-extras</artifactId>
           <version>0.1.2</version>
       </dependency>


如图:tomcat


二、配置yml


#prometheus配置
management.metrics.export.prometheus.enabled=true
management.metrics.export.prometheus.step=1ms
management.metrics.export.prometheus.descriptions=true

management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics

上传jar到服务器运行springboot

三、添加job

修改prometheus.yml,添加job添加下面代码,其中xxx替换为项目启动路径。

而后再启动prometheus,访问http://118.190.217.164:9090/,查看targets启动是否正常以下图

 - job_name: 'actuator-demo'
   # metrics_path defaults to '/metrics'
   # scheme defaults to 'http'.
  metrics_path: '/xxx/xxx/prometheus'
  static_configs:
  - targets: ['118.190.217.164:9999']

例如:


- job_name: 'actuator-demo'
  metrics_path: '/root/minedata'
  static_configs:
  - targets: ['118.190.217.164:9999']

四、 启动服务

小编对java不是很熟悉,这里仅仅只是展现 如何监控,具体逻辑没有写。示意效果。

(授人以鱼不如授人以渔)

五、 拓展

咱们其实可使用,JMX exporter,提供JMX中和JVM相关的metrics。

地址:

https://github.com/prometheus/jmx_exporter


如下实践 参考原文:

https://chanjarster.github.io/post/prom-grafana-jvm/

具体步骤以下

  1. 利用JMX exporter,在Java进程内启动一个小型的Http server

  2. 配置Prometheus抓取那个Http server提供的metrics。

  3. 配置Grafana链接Prometheus,配置Dashboard。

实践

一、建立目录


mkdir java-jvm
cd java-jvm

二、拉取JMX_Exporter


git clone https://github.com/prometheus/jmx_exporter.git

三、新建文件 simple-config.yml

# 这个文件大体意思是 取metric类型 的 GAUGE(瞬时值)
---
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

四、启动几个线程

运行如下命令启动3个Tomcat,记得把<path-to-java-jvm>替换成正确的路径。


端口自定义,因为服务器端口组每次须要设置,小编的在8000/10000 本身根据本身改便可。如下操做能够在`本地docker环境`中运行

- P

  • 第一个 是 JMX exporter提供的metrics

    • 8001 | 8002 | 8003

  • 第二个是 Tomcat 端口


docker run -d \
 --name tomcat-1 \
 -v <path-to-java-jvm>: /root/java-jvm/jmx_exporter \
 -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
 -p 8001:8001 \
 -p 8081:8081 \
tomcat:8.5-alpine

docker run -d \
 --name tomcat-2 \
 -v <path-to-java-jvm>:/root/java-jvm/jmx_exporter \
 -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
 -p 8002:8002 \
 -p 8082:8082 \
tomcat:8.5-alpine

docker run -d \
 --name tomcat-3 \
 -v <path-to-java-jvm>:/root/java-jvm/jmx_exporter \
 -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
 -p 8003:8003 \
 -p 8083:8083 \
tomcat:8.5-alpine

五、配置Prometheus

在以前新建目录java-jvm-demo,新建一个文件prom-jmx.yml,内容以下:

scrape_configs:
- job_name: 'java'
  scrape_interval: 30s
  static_configs:
  - targets:
    - '<host-ip>:8001'
    - '<host-ip>:8002'
    - '<host-ip>:8003'


六、docker启动

docker run -d \
 --name=prometheus \
 -p 9090:9090 \
 -v <path-to-prom-jvm-demo>:/prometheus-config \
prom/prometheus --config.file=/prometheus-config/prom-jmx.yml


七、访问9090看效果

八、配置Grafana

启动

docker run -d --name=grafana -p 3000:3000 grafana/grafana

登陆

访问http://localhost:3000,使用admin/admin登陆。

(能够本地docker 实践一下)

添加Prometheus数据源

这里不懂得 能够看我以前的文章。

  • Name:随便取

  • Type:Prometheus

  • URL:http://:9090

  • 其他不要设置,点击Save & Test,应该会返回成功结果

导入制做好的 Dashboard







在看和转发

都是一种支持


本文分享自微信公众号 - DataScience(DataScienceTeam)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。