摘要
工具:
- Docker,本文大量使用了Docker来启动各个应用。
- Prometheus,负责抓取/存储指标信息,并提供查询功能。
- Grafana,负责数据可视化。
- JMX exporter,提供JMX中和JVM相关的metrics。
- Tomcat,用来模拟一个Java应用。
步骤:
- 利用JMX exporter,在Java进程内启动一个小型的Http server
- 配置Prometheus抓取那个Http server提供的metrics。
- 配置Grafana连接Prometheus,配置Dashboard。
启动Java测试实例
1) 新建一个目录,名字叫做prom-jvm-demo
。
2) 下载JMX exporter到这个目录
3) 新建一个文件simple-config.yml
内容如下:
1 |
|
4) 运行以下命令启动3个Tomcat,记得把<path-to-prom-jvm-demo>
替换成正确的路径:
1 | docker run -d \ |
5) 访问http://localhost:8080|8081|8082
看看Tomcat是否启动成功。
6) 访问对应的http://localhost:6060|6061|6062
看看JMX exporter提供的metrics。
备注:这里提供的simple-config.yml
仅仅提供了JVM的信息,更复杂的配置请参考JMX exporter文档。
启动Prometheus
1) 在之前新建目录prom-jvm-demo
,新建一个文件prom-jmx.yml
,内容如下:
1 | scrape_configs: |
2) 启动Prometheus:
1 | docker run -d \ |
3) 访问http://localhost:9090看看Prometheus是否启动成功,在输入框里输入jvm_info
然后执行,应该可以看到如下图的结果:
如果没有看到三个instance,那么等一会儿再试。
启动Grafana
1) 启动Grafana:
1 | docker run -d --name=grafana -p 3000:3000 grafana/grafana |
2) 访问http://localhost:3000,使用admin/admin
登录。
3) 添加Prometheus数据源,如下图所示到添加数据源页面:
4) 配置数据源信息:
- Name:随便取
- Type:Prometheus
- URL:
http://<host-ip>:9090
- 其余不要设置,点击
Save & Test
,应该会返回成功结果
5) 导入Dashboard。我们不需要重头自己做Dashboard,用现成的就行,按下图所示进入导入页面
6) 使用我制作的JVM Dashboard,页面右侧出现的ID号是8563
,记住这个号,填在如下图所示的位置:
7) 然后鼠标点击别处稍等一下,出现下图,选择一下数据源就可以了
8) 最后打开刚刚导入的Dashboard,如下图: