夜莺监控(Nightingale)6.x 的机器失联告警设计

秦晓辉@快猫星云 2023年2月2日

夜莺监控(Nightingale) 5.x 的机器失联设计

夜莺监控(Nightingale) 5.x 中的 n9e-server 模块接收监控数据,从中解析出 ident,注册到 MySQL,同时写 ident 的最近更新时间到 redis,然后多个 n9e-server 选主,作为 leader 的 n9e-server 周期性读取 redis 里的 ident 信息,生成 target_up 指标,写入时序库。

这个方式比较绕,即时性不太好,社区里很多人也不理解,解释成本很高。希望在 6.x 版本重新做设计,简化整个逻辑,提升即时性。

夜莺监控(Nightingale) 6.x 的机器失联设计

相比 5.x,6.x 最大的改动是:去掉 target_up 指标,直接读取 MySQL 中失联的 target,如果某个 target 不活跃了(很久没有上报监控数据了),就触发告警。具体示意图如下:

6.x host nodata

原本 5.x 里 n9e-server 往 MySQL target 表写机器信息,只是 register,如果发现 DB 里有这条记录了,就不重复写了,如果发现 DB 里没有才插入。6.x 的变化是,会周期性写,发现 DB 里有这个机器了,就更新这个机器的心跳时间,这样一来,只要这个机器活着,在正常上报监控数据,DB 里的心跳时间就会更新。

夜莺监控(Nightingale) 6.x 怎么配置机器失联告警策略

在告警规则里,6.x 会新增一个规则配置方式,不用写 promql 了,只需要选择要告警的机器就行了,然后告警引擎就去看机器的最近更新时间,如果更新时间长时间没变,说明 agent 挂了,就产生告警事件。

关于作者

本文作者秦晓辉Flashcat合伙人,文章内容是Flashcat技术团队共同沉淀的结晶,作者做了编辑整理,我们会持续输出监控、稳定性保障相关的技术文章,文章可转载,转载请注明出处,尊重技术人员的成果。

标签: Nightingale
开源版
Flashcat
Flashduty