看门狗¶
看门狗可以实现在指定的事件一定时间之后没有上报之后主动报警。
feed-dog¶
(feed-dog ttl)
(feed-dog ttl outstanding-tags)
喂狗。当有事件流向这个流,看门狗就会静默。如果 ttl
秒之后没有再次喂狗,就会触发 watchdog 报警,之前缓存住的事件会在 watchdog 流后面出现,这时就可以报警了。
事件的区分与 alarm 的区分是一致的, outstanding-tags
的说明可以参照 发送报警(!) 。
watchdog¶
(watchdog & children)
过滤出看门狗事件,用于之后的判定和报警。
在事件超时之后,超时的事件会用特殊的方式包装起来,需要用这个流来提取出来。
这个流需要直接接在最外层,即需要看到集群内所有的事件。会将解包的过期事件向下传递。
(sdo
(where (service "agent.alive")
(feed-dog 90))
(watchdog
(where (service "agent.alive")
(! {:note "Agent.Alive 不上报了!"
:level 2
:expected 1
:outstanding-tags [:region]
:groups [:operation]})))
警告
watchdog
流下出现的事件都是已经过期或者恢复的报警,
state
已经帮你设置成 :problem
或者 :ok
了,并且一个周期内只会出现一次,
所以请不要接 (judge ...)
流或者 (runs 2 ...)
之类过滤的流,直接用 where
过滤出想要的结果喂给 发送报警(!) 就可以了。