本文介绍如何使用Prometheus+Grafana监控JVM的方法。
本文所提到的脚本可以在这里下载。
摘要
用到的工具:
先讲一下大致步骤:
- 利用JMX exporter,在Java进程内启动一个小型的Http server
- 配置Prometheus抓取那个Http server提供的metrics。
- 配置Grafana连接Prometheus,配置Dashboard。
第一步:启动几个Java应用
-
新建一个目录,名字叫做prom-jvm-demo
。
-
下载JMX exporter到这个目录。
-
新建一个文件simple-config.yml
内容如下:
1
2
3
4
5
6
7
8
9
|
---
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-prom-jvm-demo>
替换成正确的路径:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
docker run -d \
--name tomcat-1 \
-v <path-to-prom-jvm-demo>:/jmx-exporter \
-e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
-p 6060:6060 \
-p 8080:8080 \
tomcat:8.5-alpine
docker run -d \
--name tomcat-2 \
-v <path-to-prom-jvm-demo>:/jmx-exporter \
-e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
-p 6061:6060 \
-p 8081:8080 \
tomcat:8.5-alpine
docker run -d \
--name tomcat-3 \
-v <path-to-prom-jvm-demo>:/jmx-exporter \
-e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \
-p 6062:6060 \
-p 8082:8080 \
tomcat:8.5-alpine
|
-
访问http://localhost:8080|8081|8082
看看Tomcat是否启动成功。
-
访问对应的http://localhost:6060|6061|6062
看看JMX exporter提供的metrics。
备注:这里提供的simple-config.yml
仅仅提供了JVM的信息,更复杂的配置请参考JMX exporter文档。
第二步:启动Prometheus
- 在之前新建目录
prom-jvm-demo
,新建一个文件prom-jmx.yml
,内容如下:
1
2
3
4
5
6
7
8
|
scrape_configs:
- job_name: 'java'
scrape_interval: 30s
static_configs:
- targets:
- '<host-ip>:6060'
- '<host-ip>:6061'
- '<host-ip>:6062'
|
- 启动Prometheus:
1
2
3
4
5
|
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
|
- 访问http://localhost:9090看看Prometheus是否启动成功,在输入框里输入
jvm_info
然后执行,应该可以看到如下图的结果:
如果没有看到三个instance,那么等一会儿再试。
第三步:配置Grafana
- 启动Grafana:
1
|
docker run -d --name=grafana -p 3000:3000 grafana/grafana
|
-
访问http://localhost:3000,使用admin/admin
登录。
-
添加Prometheus数据源,如下图所示到添加数据源页面:
- 配置数据源信息:
- Name:随便取
- Type:Prometheus
- URL:
http://<host-ip>:9090
- 其余不要设置,点击
Save & Test
,应该会返回成功结果
- 导入Dashboard。我们不需要重头自己做Dashboard,用现成的就行,按下图所示进入导入页面
- 使用我制作的JVM Dashboard,页面右侧出现的ID号是
8563
,记住这个号,填在如下图所示的位置:
- 然后鼠标点击别处稍等一下,出现下图,选择一下数据源就可以了
- 最后打开刚刚导入的Dashboard,如下图:
评论