开源监控系统中 Zabbix 和 Nagios 哪个更好
作者:北海
链接:https://www.zhihu.com/question/19973178/answer/2890691700
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
综合感觉Zabbix更好,包括灵活性和社区等。但在实际工作中,发现告警洪灾很消耗运维工作量,所以也有些思考。下面介绍一种基于Zabbix实现贴合业务场景的告警聚合的方法。本方法的思路是通用的,并不局限于某一具体的软件。注意,具体的参数可以根据实际情况进行设置和选用,文中所述仅是一种示例。<img src="https://pic1.zhimg.com/50/v2-2ad29d0b66403ae2438f04362d4cdc03_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1560" data-rawheight="360" data-original-token="v2-1392f650c61e6516429bda26f2251651" class="origin_image zh-lightbox-thumb" width="1560" data-original="https://picx.zhimg.com/v2-2ad29d0b66403ae2438f04362d4cdc03_r.jpg?source=1def8aca"/>1. 引言1.1 背景IT运维怕什么?告警。而告警洪灾更是噩梦,正愉快写着文档时猛然来了无数个夺命连环Call,现在只是稍微想象一下就开始头疼了。一般来说,告警洪灾的常见原因有:算法(包括简单的预测算法以及机器学习)的局限性;告警规则配置不合理;将过多的指标放入了告警规则中,而其实人并不需要对它们进行处理;告警阈值过于苛刻;外部通知(邮件、企业微信等)过于零散;初步分析:算法的局限性现实情况复杂多变,比如节日的抢购或甚至临时上线的活动,而有时网络波动也会导致数据异常进而误触发告警。当然,长期的机器学习以及算法的进步应该能缓解这一问题,但较短时间内难以看到成效,而且可能会起到反作用。目前它还更多的是在探索试用阶段,本文暂不对此进行讨论。告警规则配置不合理不论是将过多的指标放入了告警规则中,还是告警阈值过于苛刻,都是因为开始的时候会担心错过了告警,追求大而全的监控和告警配置。当然可以通过结合自身监控需求来撸一遍所有告警规则,选择设置关心的指标和阈值即可。只是,被监控资源会不停慢慢添加,监控需求也会不停迭代,隔三差五就撸一遍所有告警规则实在是劳心费力。外部通知(邮件、企业微信等)过于零散因为告警消息是直接一条条推送出来的,所以外部通知必然零散,导致运维人员会收到数量过多的通知,且不便于寻找相关告警信息。1.2 思路基于上述分析,提出以下实现贴合业务场景的告警聚合的方法。利用三方平台接入来自于Zabbix的告警消息,按照人为设置的消息聚合规则进行聚合收敛,生成精简的事件集,并基于事件集来配置外部通知规则,从而极大减少发出告警的数量。重点在于消息聚合规则里,要按实际运维需要对告警消息进行分组,比如将一定时间范围内严重及以上级别的所有服务器告警归为一类,并分配给服务器运维团队或某一位具体的运维人员。这样就能在不去修改原始的告警规则(毕竟可能有成千上万的告警规则)的前提下,保证告警消息的聚合是贴近实际业务,同时也减少了告警的频繁轰炸。而运维人员在后续进行具体排查时,是可以在系统内部同时看到精简的事件集信息以及事件集下的所有告警事件明细的。2. 流程2.1 Zabbix环境首先需要准备好Zabbix环境,推荐使用Zabbix官方的长期支持版本比如 Zabbix 6.0 LTS。相关安装要求和流程请见官方下载安装Zabbix,更详细的说明请见官方文档的安装章节。2.2 Argus环境为了对Zabbix产生的告警进行聚合以及外部通知,需要借助于Argus运维平台,一个基于Zabbix的IT运维监控平台。这里主要是使用Argus的事件中心来设置贴合业务的事件聚合规则、消息分派规则,同时可查看与管理事件集与事件。如图为Argus事件中心的概览页,想了解更多或试用可点击前面的链接。<img src="https://pic1.zhimg.com/50/v2-eb9f91532d749bfe4badf3b645acb482_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1920" data-rawheight="1054" data-original-token="v2-df45b10eb8738a322ff39da2db4f0b73" class="origin_image zh-lightbox-thumb" width="1920" data-original="https://picx.zhimg.com/v2-eb9f91532d749bfe4badf3b645acb482_r.jpg?source=1def8aca"/>2.3 添加部门在Argus的 控制台 -> 用户管理 -> 部门管理 内,添加部门,如下图所示。<img src="https://picx.zhimg.com/50/v2-21aeb84370af51400002479ec5509156_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1094" data-rawheight="462" data-original-token="v2-f78ae2e09432bae4511fca57127967b3" class="origin_image zh-lightbox-thumb" width="1094" data-original="https://picx.zhimg.com/v2-21aeb84370af51400002479ec5509156_r.jpg?source=1def8aca"/>2.4 添加用户在Argus的 控制台 -> 用户管理 -> 用户管理 内,添加用户,如下图所示。<img src="https://pic1.zhimg.com/50/v2-eaf05d46fe3765febae7e9129469e678_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1064" data-rawheight="695" data-original-token="v2-0faf3cd9efb4a6d56a0517f44b090665" class="origin_image zh-lightbox-thumb" width="1064" data-original="https://pica.zhimg.com/v2-eaf05d46fe3765febae7e9129469e678_r.jpg?source=1def8aca"/>2.5 添加监控资源在Argus的 资源管理 -> 资源配置 -> 资源综合管理 内,添加资源,逻辑与在Zabbix内添加主机类似,如下图所示。<img src="https://picx.zhimg.com/50/v2-ab4530fb24288b7e14e90c0d717a0cdd_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1052" data-rawheight="1056" data-original-token="v2-a903d42140c2112a098a195bf52f9a1d" class="origin_image zh-lightbox-thumb" width="1052" data-original="https://pic1.zhimg.com/v2-ab4530fb24288b7e14e90c0d717a0cdd_r.jpg?source=1def8aca"/>注意,该资源使用的依然是Zabbix内的监控模版,所以资源上的告警规则也就是Zabbix模板内自带的告警规则。2.6 配置消息发送参数在Argus的 事件中心 -> 消息发送参数 内,设置外部消息的发送参数,如下图所示。<img src="https://picx.zhimg.com/50/v2-306ec3f91618b7c556a4d1b621e356cd_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="817" data-rawheight="578" data-original-token="v2-4aee47bba6dbeb6fc334a31c368c44bb" class="origin_image zh-lightbox-thumb" width="817" data-original="https://pic1.zhimg.com/v2-306ec3f91618b7c556a4d1b621e356cd_r.jpg?source=1def8aca"/>2.7 配置Zabbix内的告警规则在前面Argus内添加监控资源的步骤后,资源会自动应用对应模板,同时继承获得模板上的告警规则。如果需要对告警规则进行增改,可以直接在Zabbix内进行配置操作,入口位于Zabbix网页端的 配置 -> 主机 列表 ->对应主机行内的 触发器。具体操作可参考官方文档的触发器章节。2.8 添加事件聚合规则事件聚合规则可以通过组合条件将一定时间范围内不同的告警消息纳入同一个事件集。在Argus的 事件中心 -> 事件聚合规则 内,添加事件聚合规则,如下图所示。<img src="https://picx.zhimg.com/50/v2-51b910afe6f7df05179caae5e09848dc_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1442" data-rawheight="696" data-original-token="v2-d2e639a620c2de94794fa851cb372c90" class="origin_image zh-lightbox-thumb" width="1442" data-original="https://picx.zhimg.com/v2-51b910afe6f7df05179caae5e09848dc_r.jpg?source=1def8aca"/>注意这里仅仅是举了一个简单的例子,实际可以按照真实的运维需求进行更加复杂多样的条件设置。2.9 添加消息分派规则消息分派规则可以将符合特定多个事件聚合规则的事件集分派给选定的多个部门或人员。在Argus的 事件中心 -> 消息分派规则 内,添加消息分派规则,如下图所示。<img src="https://picx.zhimg.com/50/v2-68104f14108cf78646090912d185ec3d_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1128" data-rawheight="857" data-original-token="v2-2c32020e11f44b080136c79440a70a5f" class="origin_image zh-lightbox-thumb" width="1128" data-original="https://picx.zhimg.com/v2-68104f14108cf78646090912d185ec3d_r.jpg?source=1def8aca"/>2.10 告警消息的接收与处理在Zabbix告警触发后,Argus内会自动生成新的事件集,并通过上述消息分派方式进行外部通知。除了通过邮件、企业微信等通知给具体人员,Argus还会通过Webhook的方式将消息推送给三方系统,若有需要,后续可由三方系统继续进行自动化的流程处理。下图为邮件通知的截图,其中会包含事件集、事件集内首条事件及相关信息。在 事件中心 -> 聚合事件 中可以看到所有的事件集,同时可展开某一事件集,查看其下的事件列表、趋势图表,便于运维人员分析处理问题,如下图所示。<img src="https://pic1.zhimg.com/50/v2-a758a68cf1a5524c8ba3ffb07a8c3ea5_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="1492" data-rawheight="976" data-original-token="v2-2a58591dcc91adcd156db6155c07a923" class="origin_image zh-lightbox-thumb" width="1492" data-original="https://pic1.zhimg.com/v2-a758a68cf1a5524c8ba3ffb07a8c3ea5_r.jpg?source=1def8aca"/>