用huginn 实现health check 并通知Slack

huginn是一款功能强大的agent工具。其功能大抵和IFTTT相当,但前者的优势是开源,可定制。
接下来试着用huginn实现网站health check的功能,如果网站挂了,则通过webhook通知slack。

直接用docker的话基本上打开即用了。用默认用户名密码登录之后别忘了改密码和用户名。
然后开始创建Agent。

所谓的Agent就是完成某种任务的一个代理。huginn中,Agent可以用receiver,用来接受其发出的Event。
比如我们基于HttpStatusAgent建立一个我们自己的forum_health_check Agent.

这个agent作用很简单,就是去获取一下目标的页面,然后返回一些信息。这些信息被保存在叫做Event的一个hash之中传给下一个Agent,也就是这里的receiver。
我们可以点击一下dry run看一下具体的返回内容。

接下来我们基于TriggerAgent建立forum_health_check的receiver。在source里面填上forum_health_check 表示我们这个agent接收从forum_health_check传来的消息。

在option里面,我们看右边的说明,可以在rules数组中包含符合我们要求的rule。比如这里,当我们关心的Event中的filed(path)不符合我们预期的值(value)的时候(也就是传来的Event中status的值不是200的时候),这个触发器会被触发,然后继续产生Event传送给下一个receiver。

我们接着建立下一个receiver。这次很简单,我们选择基于SlackAgent,填上webhook的一些内容,然后就ok了。

最后看一下我们的这个三个Agent的关系图。

嗯以上。