干货|漫谈Zabbix在网络监控领域的实战场景_IP



何星,Zabbix大中华区培训师


本文为何星在2023Zabbix上海大会的演讲实录。点击图片查看演讲视频。

参加12月8-9日·北京,Zabbix年度峰会,了解更多精彩技术分享。



目录


  1. Zabbix功能简介

     2. 网络经典场景

     3. 新的监控场景探索




非常高兴参加此次Zabbix大会上海,今天我的演讲主题是Zabbix在网络监控领域的实战场景。系统管理员可能会看到这是讲网络的我是不是不必关注了呢?我相信在这个主题之后,无论是系统管理员还是网络管理员,肯定能从中得到相应的启发。


我的主题包含三部分:一是Zabbix功能简介,二是网络经典场景,三是新的监控场景探索


01

Zabbix功能简介


第一是功能简介,大家可能觉得内容繁多,无法聚焦。后面我们会讲解相应场景,具体场景时可以回想出Zabbix的相应功能。大家都认为网络监控基本上是snmp。有些管理员或业务人员会吐槽网络监控没太大花头,不就是通过不同厂商的oid不一样,能整理并解析这些oid吗?除了这些之外,我们还会有一些不同的场景,大家稍后可以参考。网络监控常用的手段包括snmp trap、syslog等。此外,Zabbix还有很多其他功能,大家可以简要查看。

干货|漫谈Zabbix在网络监控领域的实战场景_IP_02



我们进入主题的重点,就是根据场景化需求来探讨Zabbix是如何实现的。


02

网络经典场景


首先是网络设备的自动纳管。在公司规模较小的情况下,设备小,手动维护并无太大问题。但随着设备数量增加,手动维护难度会成倍增加,而且很多时候会出现监控盲点,漏掉一些信息。我们不希望出现这样的情况。


干货|漫谈Zabbix在网络监控领域的实战场景_IP_03

如何实现这个功能?大家可能会考虑到Zabbix网络自动发现功能。当设备上线或下架后,我们可以通过Zabbix自带的网络自动发现功能来实现。它提供了许多条件,例如可以根据对应的IP网段的条件,如端口、snmp及其他协议进行检测。如果检测满足条件,那我们再执行相应动作,例如匹配相应条件,并关联对应模板。这个功能相对简单,大部分人应该已经使用过。


然而,前面的功能可能无法满足大部分情况,或者要求更高的灵活度。因此,我们基于它原有的功能进行了一些定制开发。实际上,大家看流程图也相对简单,就是Zabbix与cmdb比对。大家觉得都会呀。比对后会得出未监控的和多出来的数据,如果有未监控的数据,那么就监控起来。多出来的数据应该删除。大家觉得这么简单吗?但实际上有很多规则,比如告警压制、告警收敛。说是会说。


简单地看一下逻辑,如何进行比对?实际上是根据CMDB中的IP进行比对。Zabbix有主机,主机接口里有IP或DNS名称,直接根据接口中的IP进行比对。通常我们使用IP,然后与cmdb中的全量IP进行比较。在当中的是已监控的,不在当中就是未监控,讲起来相对简单。

干货|漫谈Zabbix在网络监控领域的实战场景_网络监控_04

关于模板和群组的选择,当公司规模较大时,网络部门会有不同的运维组,他们负责的设备类型也会有所不同。在这种情况下,我们主要创建这样一个关系。除了维护组之外,资产中还包括设备类型,它是属于交换机、路由器还是防火墙。通常,Zabbix会创建相应的群组,因为在配置权限时需要依赖相应组。有时设备类型相同型号,但关联模板可能不同,例如华为的同一型号设备,可能同时作为接入交换机、汇聚或核心。通常,网络管理员会将这些信息写入主机名,然后根据名称进行选择,对于proxy的选择,这样便可以用简单方式实现负载均衡。


正如前面蟹老板提到的,在Zabbix 7.0 有原生的proxy负载能力,我们可以通过简单方式实现。因为网络监控snmp主要会影响到poller进程,有人认为通过NVPS能快速反映状态,但实际上poller进程的使用率更能反映出实际负载情况。网络设备对应的端口监控,而通过LLD方式直接添加,不会反映在进程中。因此,我们添加了这样一个数值比例,选择最小负载和最轻负载的方式。


接下来是网络端口的监控,这实际上是最经典的。网络端口监控包括丢包、错包、流量和带宽利用率,涉及到物理带宽和逻辑带宽。对于内部数据,千兆、万兆的带宽利用率与实际差不多,但是对外,受运营商限制。我们建议在端口别名中配置带宽,通过Zabbix 的js预处理实现,这样较为方便。


通常提到重要端口和非重要端口,重要端口顾名思义就是重要的,与之对应的非重要端口。实际上,两者策略有时候是不一样的,例如采集频率、触发器是否开启以及级别,都可以通过Zabbix自带的LLD Override功能实现。


接下来是线路监控,实际上非常经典。如果我们通过Zabbix proxy进行检测并发现差不多,但有时无法直接查看线路状态。这时我们需要通过网络设备自带的网络协议实现,例如华为、华三的NQA、思科的IP SLA等,依赖网络管理员进行相应的网络配置。当然,我们也可以通过snmpset实现,实际上与你的配置类似。但我们通常建议SNMP仅开通读取权限,因为有时修改网络设备配置会涉及变更,不太好。返回结果是线路响应时间和状态,根据回包数和发包数之间的比例来确定。


不同分区的网络质量分析。大部分网络监控也会进行这样的监控。实际上,我们需要清楚了解某个分区,例如上海的某分区到北京的某分区的网络质量如何,ping的延时如何。通常我们会在分区中部署Zabbix proxy,探测某个分区中的所有业务地址,得出平均值。了解不同分区之间的具体网络质量效果,尤其是当出现重大网络变更时,能快速了解变更情况。如果出现大量不通的情况,及时回调非常有效。通过直接查询数据库,因为数据量较大,将结果以json格式汇总,然后通过Zabbix 预处理提取数据。

干货|漫谈Zabbix在网络监控领域的实战场景_数据_05



当数据较多时,尤其是不同分区的业务地址变更较频繁,仍需依赖CMDB。因此,我们制定了类似流程图的同步纳管,以便更新数据。当然,我们需要提前进行ping检测,并将数据连通加入。由于某些地址本身不通,加入可能会影响原有的真实性。


另一个场景是进出口流量骤升骤降,实际上对于Zabbix来说是小菜一碟。这还不简单吗?不就是与前面时间段进行比较吗?Zabbix 的时间偏移,无论是之前老版本的3.0、4.0、5.0中都是一个小功能,但对于网络监控来说,这非常有意义。因为很多时候你的流量都比较稳, 突然有流量飙升或骤降,你需要去找一找是否有对应的问题。当然,这里非常简单便可实现。

干货|漫谈Zabbix在网络监控领域的实战场景_网络监控_06



Zabbix还提供动态基线和异常检测功能,如果大家有兴趣,可以使用。


定时报表。在Zabbix5.4版本中,有一个Zabbix web service, 可以将仪表盘打印成pdf,通过邮件方式发送。这可能与大家的想法有所偏差。稍后我们会讨论。


Zabbix自带的报表,SLA报表以及trigger top100, 发现对应的哪些事件出现较频繁去治理。


接下来我们讲到自定义报表,它与Zabbix自带的报表有所不同。通常国内想生成一个excel,包含配置信息,如纳管清单,例如有多少设备已纳管,有多少设备未纳管,以及未纳管的原因。监控策略关联了一个模板,可以在每台主机上修改阈值。但我想简单明了地看到这台主机应用的阈值,但在Zabbix上可能找来找去不方便。通过自定义报表将这些阈值和策略信息拉出来,变得简单明了。

干货|漫谈Zabbix在网络监控领域的实战场景_IP_07



另外一个问题是趋势数据。有时候我们谈论容量分析,分析历史数据和趋势数据。在Zabbix中导出这些数据会感觉比较麻烦,有没有一种方式能直接生成我需要的报表,让我能够直接分析到它们的容量使用情况?我们需要通过自定义报表和事件。统计比如最近一个月出现严重级别或某个级别以上的事件数量,然后集中进行治理,或找到对应的管理员处理。


如果大家觉得这是我需要的,或者认为我也可以做。如果你有一定的基础,对API或数据库结构有一定了解,你也可以做。但是,如果你觉得入门成本有点高,要看大家的实际情况。如果你有精力和能力可以做。如果你会问原生后面是否支持这样的情况,这就要问蟹老板了。


图形化展现是大家一进来就能看到的效果。正如蟹老板所说,一张屏幕可以展示整体运行情况,同样Zabbix仪表盘中支持许多构件。在Zabbix7.0中新构件效果和grafana有一些接近。

干货|漫谈Zabbix在网络监控领域的实战场景_网络监控_08


可能你觉得Zabbix界面仍有一点不符合中国用户的用法。这个时候该怎么办?有没有其他方式或工具来实现?并不是说要全部在Zabbix上实现,而是通过其他工具打一套组合拳去实现,当然可以。


如果你觉得要展现出炫丽的效果,我们推荐使用grafana,例如可以制作一张机房画像图或拓扑图。我们会根据对应的设备类型和设备名称来选择每个页面的效果。这里将汇总信息显示出来,当然,右下角的效果图在Zabbix也可以实现。根据自己的实际情况进行选择。如果你觉得Zabbix仪表盘已经足够了,那么可以使用Zabbix。如果你觉得老板、领导要看,想要搞更炫丽的效果,那么你还有其他选择。


03

新的监控场景探索


最后是新的监控场景探索。随着技术的更新迭代,我们需要面对新的场景和要求,应对新的挑战。这涉及到网络故障的快速定位,例如我们有很多设备,如何快速定位具体哪台设备出现故障。我们可以根据网络拓扑关系进行相互之间的探测,然后将探测结果汇总,选择成功率较低的前5台设备。说明故障原因主要在这里。网络拓扑实际上是一个复杂的工具,并非完全静态的,需要根据自己的实际情况进行选择。这仅是为大家提供一个大致的思路。


Telemetry协议网络。管理员肯定知道,这并非在近一两年就出现。国内厂商如华为,已经支持了这样的协议,并拥有自己的平台,如华为的Fabric Insight,专门处理Telemetry。它的优势在于,我们过去使用snmp监控作为一个指标,通过oid发起请求并返回。当snmp数据量较大时,特别是当所有端口都发现时,可能有成千上万个。这对网络设备造成巨大压力,可能你说压力大一点没关系,CPU高一点也没关系,但数据延迟可能会有相应影响。如果上面这些你都能接受,snmp适合你,我只能这样说。有没有其他好的改善方式?


干货|漫谈Zabbix在网络监控领域的实战场景_数据_09


Telemetry协议采用订阅式,一次订阅,在指定时间点,网络设备会将你要订阅好的信息发送给你,你可以直接处理。当然,它的时间间隔声称可以支持亚秒级别,因此可以发现很多突变信息。之前有些项目客户反馈到snmp采集间隔一分钟或两分钟,但一分钟或两分钟之间的异常波动似乎无法取到,确实可能存在相应的效果。


因此,我们可以通过另一个协议,但目前Telemetry协议没有Zabbix原生支持。所以 我们需要通过外部程序进行处理,然后通过Zabbix sender发送Zabbix。你又问了Zabbix能否实现内置Telemetry协议的支持?这个你需要问蟹老板。好的,我的演讲到这里结束,谢谢大家。