监控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/
具体步骤以下
利用JMX exporter,在Java进程内启动一个小型的Http server
配置Prometheus抓取那个Http server提供的metrics。
配置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源创计划”,欢迎正在阅读的你也加入,一块儿分享。