概述

之前写过一篇文章介绍过如何搭建 Prometheus 和 Grafana,当我们完成一个监控系统的搭建之后,下一步就需要它为我们的目标服务了。监控系统除了监控系统的状态,用于我们发现业务规律之外,自然也少不了对于异常情况的监控,当然我们不能时时刻刻地盯着仪表盘看,所以,一个简单的优化方式就是我们预设一些规则,例如 qps 持续过高时给我们一个提醒,我们看一下是不是有什么异常流量或者系统异常。

那么如何提醒又是一个问题,因为我手机后台常开着 Telegram,所以在这篇文章中我将介绍如何接入 Telegram 作为 Grafana 的报警接受端,从而获得实时的异常消息。

创建 Telegram bot

  1. 添加一个名字叫做 BotFather 的好友

  2. 发送 /newbot 消息给他,然后他会让你提供一个用户名

  3. 给你的 bot 一个用户名,随便输,可以和其他人的重复,这里我输入的是:zhangsan
  4. 给你的 bot 一个唯一的标识,这个不能和其他人的重复,可能你需要尝试多次,这里我用的是:zhangsan10086_bot
  5. BotFather 会给你返回一个 token,例如我这里返回的 token 就是:
图 2:Telegram bot token

将 bot 加入 channel

  1. 查找你的 bot 的名字

  2. 邀请你的 bot 加入一个群

  3. 发送一条信息,这一步很重要,千万别漏了,因为等下要用 API 来获取这个消息

  4. 通过 API 获取 channel ID

    在浏览器中打开以下链接,其中将 [token] 换成上面第 5 步中的 token,例如我的 token 是 6063787647:AAEWzhHNeM8VXNfs-8hbhvUl4__D_8Aah1o

    1. [root@liqiang.io]# https://api.telegram.org/bot【token】/getUpdates
    2. [root@liqiang.io]# https://api.telegram.org/bot6063787647:AAEWzhHNeM8VXNfs-8hbhvUl4__D_8Aah1o/getUpdates

    你可以从这里获取到这个负数的 ID,请记住它。

配置 Grafana

打开 Grafana,我使用的是当前的最新版本:v9.3.6(不同版本之间可能有些许不同)。

  1. 选择 Alerting -> Contact points

  2. 添加 Contact Point

  3. 填写 Telegram 信息

  4. 然后就能收到报警消息了

Ref