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系统模版是用来监控我们的服务器.

完整效果如下图:

相关推荐
王佑辉6 小时前
【jvm】如何判断一个对象是否可以回收
jvm
白总Server17 小时前
JVM解说
网络·jvm·物联网·安全·web安全·架构·数据库架构
向阳121817 小时前
JVM 进阶:深入理解与高级调优
java·jvm
用屁屁笑17 小时前
Java:JVM
java·开发语言·jvm
customer0821 小时前
【开源免费】基于SpringBoot+Vue.JS课程答疑系统(JAVA毕业设计)
java·jvm·vue.js·spring boot·spring cloud·kafka·开源
一叶飘零_sweeeet1 天前
JVM 中的完整 GC 流程
java·开发语言·jvm
2301_780853861 天前
JVM概述
jvm
向阳12181 天前
JVM入门教程:从概念到实践
java·jvm
不止会JS1 天前
JVM详解:JVM的系统架构
jvm·系统架构
学点东西吧.2 天前
JVM(一、基础知识)
java·jvm