上篇文章我们将 Spring Actuaor 接入了 Springboot Admin, 本文将对接另外一个著名的监控系统:Prometheus.
概述
从上图可以看到,整个 Prometheus 可以分为四大部分,分别是:
- Prometheus Server : Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询;
- Exporter : Methic 数据通过 Pull/Push 两种方式推送数据到 Prometheus Server;
- AlertManager: 通过配置报警规则,如果符合报警规则,那么就将报警推送到 AlertManager,由其进行报警处理;
- 可视化监控界面: Prometheus 收集到数据之后,由 WebUI 界面进行可视化图标展示。也可以直接使用 Grafana 来展示。
由于 Prometheus 界面相对比较简单,我们使用 Grafana 进行前端页面展示。
项目中引入 Promethues 支持
在 Springboot Actuator 项目中,通过引入 micrometer-registry-prometheus
包,将 metric 数据转换为 Promethues 格式的时序数据,将提供 /actuator/prometheus
endpoint 来获取数据。
1 | <properties> |
注意:
- Springboot 与 micrometer-registry-prometheus 的版本需要匹配。
加入配置项
1 | management: |
- management.endpoints.web.exposure.include: 开放的监控 endpoints;
- management.metrics.tags.application: 向 prometheus metric 时序数据中加入 application 的 tag.
安装 Promethues
我们使用 Docker 进行安装,选用的版本为 2.35.0
.
安装/启动命令
1 | # 摘取镜像 |
添加配置项
配置文件 prometheus.yml
如下配置:1
2
3
4
5
6
7scrape_configs:
- job_name: 'mointor-prometheus'
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['192.168.1.100:9501']
在这里,Prometheus 使用拉的方式从指定的目标中拉取 metric 数据,并且可以配置拉取的间隔时间及超时时间。
- scrape_interval: 轮洵拉取数据的间隔时间;
- scrape_timeout: 请求超时时间;
- metrics_path: metric endpoit;
- targets: 配置监控的服务。
启动 Promethues
运行 docker run
之后即可通过 http://hostip:9090
访问 Promethues,可以选择不同的指标进行展示,如下图所示:
安装 Grafana
Promethues web UI 内容相对单一,我们可以引入 Grafana 来进行 UI 展示。
安装/启动命令
1 | # 拉取 grafana 镜像 |
启动之后,通过 http://hostip:3000
访问 grafana, 输入默认用户/密码: admin/admin
, 即可登陆。
添加数据源
向 Grafana 中添加 premetheus 数据源,如下图所示:
添加成功之后,我们就可以通过 Grafana 查看 premetheus 中的 metric 数据。
添加 Micrometer Dashboard
要实现丰富的数据展示,我们可以根据需要定制展示的内容,但比较费时。为了简化这个操作,Grafana 提供了官方 Micrometer Dashboard,直接添加即可。
1. 搜索 Micrometer Dashboard
前往 Grafana Lab - Dashboards , 输入关键词 micrometer
查询。
2. 查看 Micrometer Dashboard 详情
打开 Micrometer Dashboard
, 复制 dashboard id
,方便后续导入操作。
3. 导入 Micrometer Dashboard 模板
在 Grafana 中根据 dashboard id
导入 Micrometer Dashboard.
4. 使用 Micrometer Dashboard
使用 Micrometer Dashboard
查看 premetheus 数据源数据,其效果如下图所示:
小结
- 引入 Prometheus, grafana 之后,可以方便整合其生态链中相关的监控工作,方便后期扩展。
工程代码:https://github.com/noahsarkzhang-ts/springboot-lab/tree/main/springboot-monitor
参考:
1. Spring Boot 2.x监控数据可视化(Actuator + Prometheus + Grafana手把手)