Metabase可以根据数据表快速制作出美观的图表,还能将这些图表拼装成更为高大上的大屏
,那么如果在大屏显示的基础上,加入对于图表上面的值做一些简单的阈值告警,比如说如果某个值大于多少,就发送消息到企业微信上面通知大家,是不是挺好的呢。
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的管理员配置里面,选择邮箱
:
然后填入前面smtp-alert的配置信息:
保存即可。
企业微信配置
登录企业微信后台,进入应用管理
,创建新的应用:
如图,我们建立了一个名为Metabase通知
的应用。
取得这个应用的agentid,企业微信的corpid以及corpsecret,填入smtp-alert配置里面。
图表添加目标线(阈值)
我们这里演示仍是用默认Sample Dataset的Orders表。
当我们按天来对Total字段设置图表的时候:
点击设置
,里面的显示
面板打开目标线
,并且设定目标值,这里设定150。
那么图表上面同时也会出现目标线的显示。之后保存图表。
告警配置
在上面配置好了目标线
的图表,右下角会出现一个铃铛的标志(如果没有配置目标线是不会出现的),点击它。
进入目标线告警的配置,这里可以选择高于
或者低于
目标值,也可以设定频次和时间(最小是每小时),发送到Email。
之后,如果一个小时内,产生的数据超过了目标值,就会发送企业微信的通知过来了。
以上,我们了解了如何使用smtp-alert工具来对接Metabase的SMTP告警,达到发送告警给企业微信的功能。这个功能不算是很好用的,因为Metabase限制了每小时检测一次,并且检测条件也很单调。其实也解开这个问题可以通过修改Metabase的源码来实现,笔者见过可以达到每分钟告警的,不过Metabase源码是Clojure,也又是另一个难题了。
我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿。