架构图

一: SpringBoot自带监控Actuator
SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。
使用步骤:
- 导入依赖坐标
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 访问监控地址: 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
- 下载 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系统模版是用来监控我们的服务器.

完整效果如下图:
