JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图

一: SpringBoot自带监控Actuator

SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。

使用步骤:

  1. 导入依赖坐标
XML 复制代码
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-actuator</artifactId>
   </dependency>
  1. 访问监控地址: http://127.0.0.1:8086/actuator

监控应用endpoint:

路径 描述 默认开启
/beans 显示容器的全部的Bean,以及它们的关系 Y
/env 获取全部环境属性 Y
/env/{name} 根据名称获取特定的环境属性值 Y
/health 显示健康检查信息 Y
/info 显示设置好的应用信息 Y
/mappings 显示所有的@RequestMapping信息 Y
/metrics 显示应用的度量信息 Y
/scheduledtasks 显示任务调度信息 Y
/httptrace 显示Http Trace信息 Y
/caches 显示应用中的缓存 Y
/conditions 显示配置条件的匹配情况 Y
/configprops 显示@ConfigurationProperties的信息 Y
/loggers 显示并更新日志配置 Y
/shutdown 关闭应用程序 N
/threaddump 执行ThreadDump Y
/headdump 返回HeadDump文件,格式为HPROF Y
/prometheus 返回可供Prometheus抓取的信息 Y

配置:

java 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*" #用于选择公开所有接口
  endpoint:
    health:
      show-details: ALWAYS #显示所有健康状态
    shutdown:
      enabled: true  #启用接口关闭 Spring Boot

二: Micrometer

Spring Boot 2.0以上,使用了micrometer作为底层的度量工具,micrometer是监控度量的门面,它能支持按照各种格式来暴露数据,其中就有Prometheus。

我们引入一个依赖来暴露Prometheus数据:

XML 复制代码
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

这个依赖的作用就是会开启一个endpoint,输出兼容Prometheus exporter的结果,方便Prometheus来采集。修改SpringBoot配置:

java 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*" #用于选择公开所有接口
  endpoint:
    health:
      show-details: ALWAYS #显示所有健康状态
    shutdown:
      enabled: true  #启用接口关闭 Spring Boot
  metrics:
    tags:
      application: ${spring.application.name} #暴露的数据中添加应用名称

然后启动应用, 访问http://127.0.0.1:8086/actuator/prometheus 应该会得到如下结果:

这就是Prometheus exporter的格式,可以看到里面暴露了很详细的JVM指标。接下来,配置Prometheus抓取监控数据。

**三:**安装node_exporter

  1. 下载 node_exporter
java 复制代码
wget -c https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

2) 解压

java 复制代码
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz 

3) 启动

java 复制代码
nohup ./node_exporter > node.log 2>&1 &

4) 校验是否启动成功

访问接口是否成功

java 复制代码
http://192.168.18.205:9100/metrics

四: 安装 Prometheus

1) 下载 Prometheus

java 复制代码
wget -c https://github.com/prometheus/prometheus/releases/download/v2.15.1/prometheus-2.15.1.linux-amd64.tar.gz

2) 解压

java 复制代码
tar zxvf prometheus-2.15.1.linux-amd64.tar.gz

3) 配置 Prometheus

java 复制代码
 # sms-demo 应用程序配置
- job_name: 'sms-demo'
   metrics_path: '/actuator/prometheus'
   static_configs:
   - targets: ['192.168.18.205:8086']
 # node-exporter 配置
 - job_name: 'sms-Linux'
   static_configs:
   - targets: ['192.168.18.205:9100']

4) 运行

java 复制代码
nohup ./prometheus > prometheus.log 2>&1 &

4) 校验是否启动成功

测试Prometheus是否安装配置成功

java 复制代码
http://192.168.18.205:9090/targets

五: 安装 Grafana

1)下载Grafana镜像:

java 复制代码
docker pull grafana/grafana

2)启动Grafana容器:

启动Grafana容器,将3000端口映射出来

java 复制代码
docker run -d --name grafana -p 3000:3000 grafana/grafana

3)验证部署成功

网页端访问http://192.168.18.205:3000/验证部署成功

默认账户密码:admin\admin

4) Prometheus整合Grafana

增加数据源Data sources

点击 Add data source

选择Prometheus进行配置,点击 Select

配置Prometheus链接, 并点击Save & test 保存

5) 导入模版

点击Import

输入 模版ID 进行加载

JVM监控模版: dashboad-ID:12856

Linux系统监控模版:

  • Node Exporter for Prometheus Dashboard EN 20201010

    • dashboard-ID: 11074
  • Node Exporter Dashboard

    • dashboard-ID: 16098

配置上述模版, JVM模版 是用来监控我们应用JVM的详情信息, 而Linux系统模版是用来监控我们的服务器.

完整效果如下图:

相关推荐
菜鸟赵大宝2 小时前
【C++】C++深拷贝与浅拷贝
java·jvm·c++
qq_3391911413 小时前
prometheus 安装node_exporter, node_exporter 安装最新版 普罗米修思安装监控服务器client
网络协议·rpc·prometheus
zx0105zx13 小时前
监控平台zabbix对接grafana
运维·zabbix·grafana
athena199927015 小时前
CPU的核心数和线程数
java·开发语言·jvm
野生派蒙20 小时前
Java:JDK、JRE和JVM 三者关系
java·开发语言·jvm
Tech Synapse21 小时前
Java循环创建对象内存溢出怎么解决
java·开发语言·jvm
青云交1 天前
Java面试题--JVM大厂篇之深入了解G1 GC:大型Java应用的性能优化利器
java·jvm·性能优化·g1 gc适用的具体场景·g1 gc的特点·g1 gc的配置和调优示例·混合回收
菠菜很好吃1 天前
Java知识点大纲
java·jvm·spring
喵先森爱吃鱼1 天前
第十三章 StringTable
java·jvm
糖~醋排骨1 天前
Prometheus 监控服务器
prometheus