夜莺监控(Nightingale)6.x 的机器失联告警设计
秦晓辉@快猫星云
2023-02-02 06:06:10
夜莺监控(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 不活跃了(很久没有上报监控数据了),就触发告警。具体示意图如下:
原本 5.x 里 n9e-server 往 MySQL target 表写机器信息,只是 register,如果发现 DB 里有这条记录了,就不重复写了,如果发现 DB 里没有才插入。6.x 的变化是,会周期性写,发现 DB 里有这个机器了,就更新这个机器的心跳时间,这样一来,只要这个机器活着,在正常上报监控数据,DB 里的心跳时间就会更新。
夜莺监控(Nightingale) 6.x 怎么配置机器失联告警策略
在告警规则里,6.x 会新增一个规则配置方式,不用写 promql 了,只需要选择要告警的机器就行了,然后告警引擎就去看机器的最近更新时间,如果更新时间长时间没变,说明 agent 挂了,就产生告警事件。
关于作者
本文作者秦晓辉,Flashcat合伙人,文章内容是Flashcat技术团队共同沉淀的结晶,作者做了编辑整理,我们会持续输出监控、稳定性保障相关的技术文章,文章可转载,转载请注明出处,尊重技术人员的成果。