前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Prometheus+Grafana监控JVM

使用Prometheus+Grafana监控JVM

作者头像
颇忒脱
发布2019-03-13 16:09:31
4.8K0
发布2019-03-13 16:09:31
举报
文章被收录于专栏:颇忒脱的技术博客

本文所提到的脚本可以在这里下载。

摘要

用到的工具:

  • Docker,本文大量使用了Docker来启动各个应用。
  • Prometheus,负责抓取/存储指标信息,并提供查询功能。
  • Grafana,负责数据可视化。
  • JMX exporter,提供JMX中和JVM相关的metrics。
  • Tomcat,用来模拟一个Java应用。

先讲一下大致步骤:

  1. 利用JMX exporter,在Java进程内启动一个小型的Http server
  2. 配置Prometheus抓取那个Http server提供的metrics。
  3. 配置Grafana连接Prometheus,配置Dashboard。

第一步:启动几个Java应用

1) 新建一个目录,名字叫做prom-jvm-demo

2) 下载JMX exporter到这个目录

3) 新建一个文件simple-config.yml内容如下:

代码语言:javascript
复制
---
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

4) 运行以下命令启动3个Tomcat,记得把<path-to-prom-jvm-demo>替换成正确的路径:

代码语言:javascript
复制
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

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,内容如下:

代码语言:javascript
复制
scrape_configs:
  - job_name: 'java'
    scrape_interval: 30s
    static_configs:
    - targets:
      - '<host-ip>:6060'
      - '<host-ip>:6061'
      - '<host-ip>:6062'

2) 启动Prometheus:

代码语言:javascript
复制
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

3) 访问http://localhost:9090看看Prometheus是否启动成功,在输入框里输入jvm_info然后执行,应该可以看到如下图的结果:

图片描述
图片描述

如果没有看到三个instance,那么等一会儿再试。

第三步:配置Grafana

1) 启动Grafana:

代码语言:javascript
复制
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,如下图:

图片描述
图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 第一步:启动几个Java应用
  • 第二步:启动Prometheus
  • 第三步:配置Grafana
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档