作者简介
本文作者贾亚伟,拥有超6年的Zabbix监控解决方案实施与管理经验,对Zabbix的深度定制、性能优化均有着丰富的实践经验和独到的见解。曾主导并实施了多个大型企业级IT基础设施监控项目,并将Zabbix与企业现有的运维体系进行自动化整合,从而进一步提升运维效率与系统性能。
01
引言
企业成长中的监控挑战
随着企业业务的发展,设备数量不断增加,设备种类也日益繁多。这些设备的监控维护,也面临着越来越严峻的挑战:
管理挑战加剧:企业的设备种类繁多,管理难度大
信息化短板显现:传统的管理方式在应对新设备上线时显得力不从心,手动配置监控既繁琐又耗时
专业人员不足:人员流动与扩张中,专业运维力量可能捉襟见肘,导致设备维护迟缓,信息遗漏频发
被动应对:设备维护往往滞后于问题爆发,缺乏前瞻性的预见与维护策略
Zabbix的先锋角色与挑战
在基础设施监控领域中占有重要地位的Zabbix,并为解决设备监控维护的问题提供了网络发现功能。该功能可以通过网段以及监控相关协议发现设备,并根据预置策略自动添加监控。但随着企业的发展,该功能也存在一定的局限性:
告警优化需求:设备的告警功能是在设备上线后立即启用么,调试阶段造成的告警噪音怎么办?
离线状态识别:使用自动发现进行下线,设备下线时也会先发出告警,一定时间后才能自动下线。如何区分设备故障离线和计划下线?
维护盲区:设备增多与团队扩张下的维护漏洞,如何确保监控无死角?
CMDB与Zabbix的协同作战
为了应对上述挑战,本文主要阐述了在设备生命周期管理模式下,如何将CMDB与Zabbix监控的维护深度结合在一起,以提升监控数据准确率,降低监控运维成本。本文面向Zabbix初级以及进阶用户,想要更高效的对Zabbix监控进行管理的用户,希望本文能为您带来一些帮助与灵感。
02
设备生命周期管理概述
定义与阶段
T
P
S
下图周期状态中,维护状态作为一种特殊状态,有多种实现方式,可以独立字段管理,也可以作为生命周期的状态管理 :
设备的生命周期
周期状态介绍
上图是作者总结的一种设备生命周期状态,覆盖了设备从规划到退役的所有阶段。需要注意的是,状态流转越完整,维护成本也就越高。本文由于篇幅限制,重点介绍了建设中-建设完成-在线-下线中几个阶段变化时,与监控的联动设计。由于各企业关注点或者流程各有差异,您也可以结合自身需求,对该状态流程进行修改,扩展或删减,但其大致思路是想通的。
状态的维护
运维过程中,几乎所有的运维平台操作都可以转化为对设备“状态”的维护。堡垒机,认证系统,监控,日志等等。平台越多,生命周期越完整,从中得到的收益也将越高。即使只有监控系统需要维护,相比纯手动添加监控,也要高效准确很多。
CMDB平台
配置管理数据库。本文选用Netbox进行生命周期状态和数据的维护,实际上自研等其他CMDB,本文思路均适用。
03
Zabbix监控维护流程分析
首先要做的是,将生命周期状态与监控维护流程关系对应起来。上节图示已经描绘出了设备生命周期的大致状态,下面分析下我们维护Zabbix的主要步骤。
我们以新增站点的第一台交换机从上线到下线为例,取其中几个关键节点,需要覆盖到设备生命周期在监控系统内的全部操作。
04
Zabbix监控的自动维护实现
同步架构
整体同步架构
使用FastAPI实现一个转换接口,接收Netbox的Webhook请求,并转化为对应的Zabbix操作通过Zabbix API进行执行。如果CMDB不支持webhook,仅使用定时任务轮询CMDB,再同步到Zabbix也可以。
实际上我认为最佳实践是两者同时使用-Webhook保证时效性,定时任务防止系统因维护或者意外故障导致的请求丢失,以保证数据完整性。
Netbox支持实现
Netbox支持完整的数据变动触发Webhook,当数据发生变化时,发送webhook信息到fastapi 。
Netbox Webhook配置
默认的webhook格式如下 :
另外在Netbox中增加了几个自定义字段,
ManagementIP 设备管理IP
Priority 优先级
Extendedtemplate 扩展模板
这些字段推荐,但不是必须的,您可以按需调整。
自定义字段-管理IP
Netbox默认的管理IP是维护在接口上的,虽然更精确,也更符合实际模型,但带来了更大的运维成本。用户需要先添加接口,在IPAM里添加IP,再在接口上绑定IP,并标记为管理接口。使用Netbox前期建议考虑添加ManagementIP字段,以简化管理IP字段的维护。
Zabbix 同步实现细节
1. 组同步
主要目的是便于Zabbix内的主机管理。实践经验上,使用最广泛的维度作为必选的主机组,一般即站点。其他维度根据使用频率添加到组。非必须维度建议添加到主机tag与宏里,以简化组结构。
[必须]根据站点名称创建Zabbix主机组
[可选]根据设备型号创建主机组
[可选]根据设备角色创建主机组
2. 设备同步
设备同步是同步体系中的主体,主要包括设备基础信息同步,设备模板同步,设备标签(与宏)同步。
2.1 设备基础信息同步
设备必须至少维护以下字段用于创建监控:设备名称,角色,型号,管理IP。
这里增加了一个角色信息,是因为在实践过程中,同样的设备用于不同的角色,他们的监控关注点经常是不同的。例如在园区网中,S5500作为汇聚交换机,可能要关注所有接口UP Down状态,但是作为接入交换机,可能仅关注上连接口。
[必须]提取设备名称创建主机,
[必须]设备角色,型号用于判断接口类型,这里主要区分Agent接口与SNMP接口
[必须]结合管理IP确定完整的取值接口
[必须]所属站点,关联到分组,也可以根据站点等信息选取Proxy
[可选]站点经纬度同步到设备资产表内,用于后续监控地图绘图
2.2 设备标签与宏同步
由于标签与宏的绝大部分字段都是一致的,这里在一节内进行说明。
Zabbix系统中,标签主要用于系统内部操作过滤,宏可以作为变量,通过action动作继续往下游传递。
手动使用时,并不能完全发挥主机宏的价值,因为逐台配置比较繁琐。这也导致宏功能常常被轻视。但是如果对接其他系统,进行自动化配置,宏功能扮演着非常重要的角色。他是一个自定义的变量存储位置,因为其极高的自由度,几乎可以与任意上下游系统字段做映射。
这里宏比标签多了两个字段:netbox_id用于唯一性映射检查,update_date用于更新时间对比
netbox_id还增加了前后缀,因为宏在api查询时是作为字符串进行模糊查询的。可能出现值包含关系的都建议增加前后缀防止重复。也可以反向存储-将zabbix id存入Netbox。
Zabbix宏变量(Macro)
目前从Netbox提取了以上个属性作为主机宏,包括主要的设备属性,状态,站点信息。当设备产生告警时,这些宏内容将被携带到告警信息中传递到下游 。
带宏信息的消息模板配置示例
而标签可以用于告警分发,过滤等操作。
Zabbix 标签(Tag)
action里标签的应用
2.3 设备模板同步
设备模板同步是监控同步体系中最重要的一环,它解决了如何自动化管理设备监控告警策略,Netbox内的设备属性如何转化为设备监控项等重要问题。
2.3.1 基础模板
本示例从设备属性里,提取设备优先级,设备角色,设备厂商,合并为设备主模板。
通过这三个维度创建模板,我们可以覆盖90%以上的设备监控需求。
(新型号设备)第一次同步到Zabbix中时,此模板是空的,一般并不建议直接在此模板上添加监控项,而是建议将其当作母模板,将带有具体监控项的模板关联上去。
这里根据企业自身环境,提取影响监控内容最多的几个维度,至少应该包含设备型号,因为型号绝对会影响设备的监控方式与项目。其他维度按需设置。
从Netbox同步的模板
2.3.2 扩展模板
对于少量的特殊网络设备,以及服务器,IOT等设备,也可能遇到三个维度依然无法确认设备完整具体监控内容的情况。所以我们为设备增加了一个扩展字段-Extendedtemplate 。该字段也可用于服务标记。
自定义的扩展模板字段配置
例如一台虚拟化服务器,他的标准模板是 P4 VSRV Linux,表示它是一台linux系统的虚拟机,但是同样角色同样的系统还包含了不同的服务,可能是DNS,HTTP,或者其他。所以可以为他附加一些扩展模板,这里选择DNS,如果有新的业务,设备也可以自定义其他监控模板 。
自定义扩展模板的使用
通过同步程序同步后,将扩展模板挂载到监控系统host下。
模板关联到设备Host的效果示例
第一次同步的扩展模板,与主模板一样,监控项为空,需要配置其详细的监控策略,可以选择系统已有的监控模板,如果无法完全满足,也可配置全新的自定义模板 。
扩展模板关联监控项的操作
通过主要模板与扩展模板的配合,以及同步程序的实现,我们可以完全覆盖设备入网运维管理的业务场景。
如果有新业务接入,需要业务提供期望的监控指标,加上通用指标,形成新业务完整的监控模板。
05
总结
全新维护流程,重塑运维效率
引入新型号设备时,在Netbox添加型号信息
引入新拓扑角色,或者角色适配新型号时,在Zabbix绑定新模板
上线设备时,在Netbox维护设备型号,角色,IP等信息(将自动同步到Zabbix并创建监控)
告别重复,拥抱自动化
至此,Zabbix管理员将彻底告别因设备频繁上下线而带来的繁琐重复工作!除非面临监控策略的精细调整或新型设备的引入,否则,Zabbix的监控配置将实现自动适应,无需手动干预,这正是现代运维管理的理想状态。至于Netbox的数据维护工作,它本就是设备部署前不可或缺的一环。未来,我们将进一步探讨探讨如何更加高效、精准地管理这些数据,让您的运维工作更加游刃有余!
参考文档
Netbox的事件规则:
Netbox的Webhook:
Zabbix的宏变量:
定时同步脚本代码链接,
由于环境差异,以及时间有限,脱敏后未完全测试,请勿直接用于生产环境。
仅供学习交流,如需使用,请充分测试修改后使用。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.