SpringBoot 集成 Admin「自定义告警」
2024-01-19 19:16:48
前言
不久前,我写过一篇 Admin 服务监控报警的文章:SpringBoot 集成 Admin「告警通知」。
这实现很简单,只需增加继承 AbstractStatusChangeNotifier
配置报警机制就可以。
但是,默认的报警通知方式比较有限,只有邮件和 SMS。
如果您有更多个性化的报警通知需求,就需要使用自定义告警通知方式。
本文将介绍如何使用 SpringBoot Admin 和 Prometheus、Grafana、Slack、Telegram 等工具来实现自定义告警通知功能,帮助您更有效地监控和管理微服务应用程序。
一、准备工作
在开始之前,您需要确保已经安装并运行了 SpringBoot Admin Server 和一个或多个微服务应用程序。
同时,您还需要安装 Prometheus 和 Grafana,以便能够收集和可视化微服务应用程序的监控数据。
最后,您还需要安装 Slack 或 Telegram,以便能够接收报警通知。
二、配置 SpringBoot Admin
首先,我们需要在 SpringBoot Admin Server 中配置自定义告警通知方式。
打开 application.yml
文件,添加以下配置:
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: health,info,prometheus
metrics:
tags:
application: ${spring.application.name}
info:
git:
mode: full
其中,management.metrics.tags.application
配置了微服务应用程序的名称,以便 Prometheus 可以正确收集和聚合监控数据。
三、配置 Prometheus
接下来,我们需要配置 Prometheus 以收集 SpringBoot Admin Server 和微服务应用程序的监控数据。
打开 prometheus.yml
文件,添加以下配置:
scrape_configs:
- job_name: 'springboot-admin-server'
scrape_interval: 1m
static_configs:
- targets: ['localhost:8080']
- job_name: 'springboot-microservices'
scrape_interval: 1m
static_configs:
- targets: ['localhost:8081', 'localhost:8082']
其中,scrape_configs
配置了要收集监控数据的目标。
job_name
指定了任务的名称,scrape_interval
指定了采集指标的时间间隔,static_configs
指定了目标的地址。
四、配置 Grafana
现在,我们可以使用 Grafana 来可视化 Prometheus 收集的监控数据。
打开 Grafana,并创建一个新的仪表盘。
然后,添加一个 Prometheus 数据源,并选择您之前创建的 Prometheus 实例。
接下来,您可以添加各种面板来可视化监控数据,例如,微服务应用程序的请求数量、响应时间、错误率等。
五、配置 Slack 或 Telegram
最后,我们需要配置 Slack 或 Telegram 以接收报警通知。
1. Slack
首先,您需要创建一个 Slack 应用程序。
登录 Slack,然后点击右上角的“+”按钮,选择“创建应用程序”。
在“应用程序名称”字段中输入您的应用程序的名称,然后点击“创建应用程序”。
接下来,您需要选择您的应用程序的类型。
对于自定义告警通知,我们选择“自定义集成”。
然后,点击“创建自定义集成”。
在“设置”页面,您需要填写一些信息,包括应用程序的名称、说明、图标等。
填写完成后,点击“保存更改”。
接下来,您需要安装 Slack 应用程序。
点击“安装应用程序”按钮,然后选择您要安装应用程序的团队。
安装完成后,您需要配置 Slack 应用程序的设置。
点击“配置”按钮,然后选择“事件订阅”。
在“事件订阅”页面,您需要选择要订阅的事件。
对于自定义告警通知,我们选择“status_change”。
然后,点击“保存更改”。
最后,您需要获取 Slack 应用程序的 Webhook URL。
点击“OAuth & Permissions”按钮,然后选择“Webhooks”。
在“Webhooks”页面,您会看到一个“Webhook URL”。
复制这个 URL,以便在 SpringBoot Admin Server 中配置。
2. Telegram
首先,您需要创建一个 Telegram 机器人。
打开 Telegram,然后搜索“BotFather”。
点击“BotFather”,然后发送/newbot
命令。
接下来,您需要输入您的机器人的名称和用户名。
填写完成后,点击“创建机器人”。
BotFather 会给您一个机器人的令牌,复制这个令牌,以便在 SpringBoot Admin Server 中配置。
六、配置 SpringBoot Admin 自定义告警通知
现在,我们可以配置 SpringBoot Admin 自定义告警通知了。
打开 application.yml
文件,添加以下配置:
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: health,info,prometheus
metrics:
tags:
application: ${spring.application.name}
info:
git:
mode: full
health:
status:
http:
enabled: true
notification:
slack:
enabled: true
webhook-url: https://hooks.slack.com/services/XXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX
telegram:
enabled: true
bot-token: 123456789:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
chat-id: 123456789
其中,management.health.status.http.notification.slack.webhook-url
配置了 Slack 应用程序的 Webhook URL,management.health.status.http.notification.telegram.bot-token
配置了 Telegram 机器人的令牌,management.health.status.http.notification.telegram.chat-id
配置了 Telegram 机器人的聊天 ID。
七、测试自定义告警通知
现在,您可以测试自定义告警通知了。
首先,确保 Prometheus 和 Grafana 正在运行。
然后,打开微服务应用程序,并发送一些请求。
过了一会儿,您应该会在 Grafana 中看到微服务应用程序的监控数据。
接下来,您可以模拟一个错误。
例如,您可以修改微服务应用程序的代码,让它抛出异常。
过了一会儿,您应该会收到 Slack 或 Telegram 的报警通知。
八、结语
通过本文,您已经学会了如何使用 SpringBoot Admin 和 Prometheus、Grafana、Slack、Telegram 等工具来实现自定义告警通知功能。
这将帮助您更有效地监控和管理微服务应用程序。
希望本文对您有所帮助。