在中,大程序中,随着用户体量的增加,监控的重要性就越来越高。一套清晰,明了的监控可以极大的帮助开发和运维人员发现程序的问题或不足。
对于 spring boot 程序而言,我们可以使用下面的工具来进行系统级别的监控
- grafana 是一个跨平台的开源的度量分析和可视化工具
- prometheus 是 SoundCloud 开源监控警告解决方案,存储的是时序数据
- spring boot actuator 可以监控和度量 spring boot 应用程序
程序配置#
首先需要添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--将actuator监控的指标转为prometheus格式-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.7.1</version>
</dependency>
在配置文件声明开放监控指标
management:
endpoints:
web:
# 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
# 生产环境不建议放开所有 根据项目需求放开即可
exposure:
include: "*"
最好启动程序进行验证,访问 http://localhost:8080/actuator/prometheus
查看监控信息
安装 Prometheus + Grafana#
以 Ubuntu 为例,先安装 docker-compose
apt install docker-compose
创建 prometheus.yml 配置文件
scrape_configs:
# 任务名称
- job_name: 'actuator-springboot'
# 监控路径
metrics_path: '/actuator/prometheus'
static_configs:
# 目标路径
# 如果使用wsl或服务器请填写IP
- targets: ['localhost:8080']
编写 docker-compose.yaml
version: '3'
services:
grafana:
container_name: grafana
image: grafana/grafana-oss:10.0.0-ubuntu
environment:
- TZ=Asia/Shanghai
ports:
- 3000:3000
volumes:
- ./grafanaplugin:/var/lib/grafana/plugins/grafanaplugin
privileged: true
restart: always
prom:
image: quay.io/prometheus/prometheus:latest
volumes:
- ./monitor/prometheus.yml:/etc/prometheus/prometheus.yml
command: "--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus"
ports:
- "23333:9090"
depends_on:
- exporter
exporter:
image: prom/node-exporter:latest
ports:
- "19100:9100"
需要注意的是:
prometheus.yml 配置文件应放在 docker-compose.yaml 文件同级的 monitor 文件夹下
grafana 的镜像使用的是最新的 10.0 版本,底层用的是 Ubuntu,你也可以在官方的下载页面进行自定义,推荐使用最新版,包含了部分已汉化的中文
一切就绪后使用 docker-compose up -d
命令启动这些容器
验证 prometheus 采集#
浏览器里打开 http://localhost:23333, 通过菜单,将页面切换到 Targets, 在 targets 里能看到我们的监控任务
配置 Grafana#
访问 http://localhost:3000
进入 Grafana 的管理面板,默认账号密码为 admin/admin
我们已经采集到监控数据了,但还需要在 Grafana 监控面板中显示
你也可以选用中文语言,在侧边栏选择 Home --> Administration --> Default preferences
添加数据源#
在 Data sources (数据源) 中点击添加新数据源,选择第一个 prometheus
填写 prometheus 的地址
最下方选择请求方法为 GET
添加监控样式#
数据源配置好后,还需要为其设置个监控面板。Grafana 支持根据 ID 直接从市场导入样式
如 https://grafana.com/grafana/dashboards/4701
选择仪表板 --> 新建 --> 导入
输入 4701 然后 Load 即可
完成之后你就可以看到详细的监控信息了
监控指标解释#
可以看这篇文章
- 配置 Grafana 监控报警
Spring Boot Actuator+Prometheus + Grafana 监控 JVM 数据
Prometheus 监控 Java 服务,通过 Grafana 工具将 JVM 参数可视化,样式 4701 参数解读