Grafana 企业微信报警

前言

最近想给自己组的 Grafana 添加合适的报警,最好时效性好一点的方案,首选是微信短信之类的,但是 Grafana 自带的通知方式里也就一个 dingding 还勉强满足要求,我遂上网找了其他相关方案,发现 https://zhuanlan.zhihu.com/p/38225794 提供了企业微信的支持方法,便尝试一通。

作者给官方提了支持企业微信接口的 pr,但是官方好像不太买账,至今没有 merge 到主干上,最新的 grafana alerting 也没有 wechat 一说,所以我就打算自己试了。

虽然刚开始碰到了一些坑,但是好在瑕疵不大,这里直接提供现成方案。

方案

第一步下载官方库

$ wget https://codeload.github.com/grafana/grafana/tar.gz/v5.4.2 -O grafana-5.4.2.tar.gz

我一开始去 clone 的 master 库,然后编译 n 遍都失败了,本来以为是自己环境配置问题,到最后发现是代码问题,应该找份 release 文件,比如我这用的是 v5.4.2 的

然后解压:

$ mkdir grafana
$ tar xzf grafana.tar.gz -C grafana --strip-components 1

添加企业微信接口

https://github.com/wangriyu/docker-grafana/tree/master/wechat-notifier

打开链接将其中的两份代码复制到 grafana/pkg/services/alerting/notifiers 中

编译镜像

我这选择编译成镜像,使用方便一点,也可以照着官方的 readme 直接编译本地文件使用

$ cd grafana
$ make build-docker-full

等待许久后会生成一个 grafana/grafana:dev 镜像

启动容器

$ docker run -d --name=grafana -p 3000:3000 grafana/grafana:dev

打开 localhost:3000 即可打开 grafana 页面,初始账号密码是 admin/admin

添加报警方式

notifier

打开 notification channels 界面,添加 wechat 方式的报警,

CorpId 去企业微信中登录后查看我的企业一栏最下方获取

AgentID 和 Secret 则需要去创建报警应用那里获取

ToUser 选择受众范围,默认 @all,也可以指定用户 UserID1|UserID2|UserID3,这个 UserID 是企业通讯录中用户的账户名,不是微信号

设置触发报警规则

http://docs.grafana.org/alerting/rules/

官方文档说的比较清晰了

效果

可以在微信中接收报警信息

wechat

可以附带截图信息

alerting

文章目录
  1. 前言
  2. 方案
    1. 第一步下载官方库
    2. 添加企业微信接口
    3. 编译镜像
    4. 启动容器
    5. 添加报警方式
    6. 设置触发报警规则
    7. 效果