Metabase程序员的数据工具 告警篇

4,706 阅读3分钟

Metabase可以根据数据表快速制作出美观的图表,还能将这些图表拼装成更为高大上的大屏,那么如果在大屏显示的基础上,加入对于图表上面的值做一些简单的阈值告警,比如说如果某个值大于多少,就发送消息到企业微信上面通知大家,是不是挺好的呢。

网络攻击A01.jpg

Metabase由于OpenSource版本功能有限,所以只能做到最小间隔每小时的自动检测,它可以检查某个图表上面的某个数值,是否超出或者低于目标线(阈值),然后发邮件进行告警。这个对比专业的运维告警体系,如OpenFalcon等是远远不及的,不过如果仅仅作为简单使用也还是足够了。

本文就来了解一下Metabase的图表阈值告警功能。看看怎么把它的告警和企业微信联系到一起。

SMTP 组件

上面说过,Metabase的OpenSource版本只能通过邮件来进行告警,所以我们可以假装成一个SMTP邮件服务器,接收到它的告警邮件,再将其转发成企业微信的通知信息。

SMTP服务转发企业微信工具:github.com/SpeedPHP/sm…

这个工具是使用Node编写的,直接拉取源码后,npm安装依赖并pm2启动即可。

git clone https://github.com/SpeedPHP/smtp-alert.git

cd smtp-alert

npm i

pm2 start

根目录下面的package.json可以配置本机IP和端口,邮件里面图表链接前缀以及企业微信的认证信息(在企业微信后台获得)。

  "ip": "192.168.0.2", // 本机IP,或者是自己的SMTP域名
  "port": 3045, // 端口
  "link_prefix": "http://192.168.0.2:3000", // 图表链接的前缀
  "qyapi_gettoken_url": "https://qyapi.weixin.qq.com/cgi-bin/gettoken",
  "qyapi_sendmsg_url": "https://qyapi.weixin.qq.com/cgi-bin/message/send",

  "qyapi_corpid": "This_is_your_corpid", // 企业微信的corpid
  "qyapi_corpsecret": "This_is_your_corpsecret", // 企业微信的corpsecret
  "qyapi_agentid": "This_is_your_agentid" // 企业微信当前告警应用的agentid

配置好以上内容后,重启即可。

Metabase配置邮箱

进入Metabase的管理员配置里面,选择邮箱:

1.png

然后填入前面smtp-alert的配置信息:

2.png

保存即可。

企业微信配置

登录企业微信后台,进入应用管理,创建新的应用:

3.png

如图,我们建立了一个名为Metabase通知的应用。

4.png

取得这个应用的agentid,企业微信的corpid以及corpsecret,填入smtp-alert配置里面。

图表添加目标线(阈值)

我们这里演示仍是用默认Sample Dataset的Orders表。

5.png

当我们按天来对Total字段设置图表的时候:

6.png

点击设置,里面的显示面板打开目标线,并且设定目标值,这里设定150。

7.png

那么图表上面同时也会出现目标线的显示。之后保存图表。

告警配置

在上面配置好了目标线的图表,右下角会出现一个铃铛的标志(如果没有配置目标线是不会出现的),点击它。

8.png

进入目标线告警的配置,这里可以选择高于或者低于目标值,也可以设定频次和时间(最小是每小时),发送到Email。

9.png

之后,如果一个小时内,产生的数据超过了目标值,就会发送企业微信的通知过来了。

10.png


以上,我们了解了如何使用smtp-alert工具来对接Metabase的SMTP告警,达到发送告警给企业微信的功能。这个功能不算是很好用的,因为Metabase限制了每小时检测一次,并且检测条件也很单调。其实也解开这个问题可以通过修改Metabase的源码来实现,笔者见过可以达到每分钟告警的,不过Metabase源码是Clojure,也又是另一个难题了。

Metabase 系列文章图表篇大屏篇告警篇


我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿