返回

SpringBoot 集成 Admin「自定义告警」

后端

前言

不久前,我写过一篇 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 等工具来实现自定义告警通知功能。

这将帮助您更有效地监控和管理微服务应用程序。

希望本文对您有所帮助。