作者简介

朱林贤
中级通信工程师,2018年获得电信技术与业务硕士,2019年入职中国通号卡斯柯信号有限公司工业互联网技术部。
2020年起从事与Zabbix相关的网络管理工作,并在2021年获得了Zabbix中级认证,同时也是Zabbix 6.0与7.0官方中文手册译者。
目录
一、中国通号卡斯柯
二、轨道交通系统中通信业务的NMS
三、基于Zabbix的网管产品开发及应用
四、现阶段面临的挑战
一、中国通号卡斯柯
中国通号卡斯柯有限公司是一家专注于轨道交通的控制系统集成商,由中国铁路通信信号股份有限公司与阿尔斯通共同出资成立,是中国铁路行业第一家中外合资的企业。
工业互联网技术部隶属于公司旗下的创新研究院,由通信和网络安全两个小组组成。主要负责三个不同方向的技术产品研发工作,分别是通信网络技术,包含无线与有线网络以及冗余技术;网络安全技术,包含安全标准、安全产品方案以及数据安全;数据采集与边缘计算技术,主要包括工业传感器以及边缘计算。部门人数精简,全员技术扎实,负责与主导公司运作项目内的通信与网络安全产品的相关工作。
二、轨道交通系统中通信业务的NMS
2.1 城市轨道交通通信信号系统组成
在传统的城市轨道交通系统中主要包含五个系统,分别是与业务相关的:列车自动控制系统ATC、列车自动监控系统ATS、计算机联锁系统CI、维护支持系统MSS,以及承载所有业务数据传输的数据通信系统DCS。

2.2 通信信号系统架构
DCS通信系统负责完成车辆与地面、地面与车站、车站之间以及车站到控制中心的通信工作,那么为了满足这些通信需求,我们在这些不同的位置就需要根据现场环境部署有线以及无线类型的通信设备。因此,承载着业务信息传播重任的DCS通信系统的安全、稳定、效率对于列车的正常运行至关重要。

2.3 通信网络管理目标
那么作为整个DCS通信系统的网络管理,需要纳入到监管范围内的主要目标就包括:
1. 位于地铁线路控制中心的工作站设备、路由器设备以及交换机设备;
2. 位于骨干环网,负责主要通信任务的路由器与交换机设备;
3. 位于设备集中型车站内的服务器与交换机设备;
4. 安装于轨道旁侧的轨旁无线通信设备;
5. 安装于车辆头尾两侧的车载无线通信设备。
大致总结下来,DCS系统网络管理的目标主要为交换机、路由器、服务器与无线通信设备。

2.4 城轨项目的监测部署及权限管理
在网管的部署上,根据不同的项目有不同的要求。
例如,一条完整的地铁线路通常需要部署以下几个方面:
● 正线:正常运营的线路
● 车辆段:用于车辆交换的线路
● 试车线:测试单车性能的线路
● 停车场:业务停摆时间,所有车辆都要进入停车场
● 培训中心:大概一个城市会有一个培训中心,用于培训车辆驾驶员,以及进行设备测试工作的人员。
通常来说,我们需要在正线部署一台服务器,同时管理车辆段、试车线及停车场,而培训中心是一个独立的系统,需要单独部署一台服务器。
除了部署要求,还有网管查看权限的管理要求。例如,在控制中心,运营人员需要能够看到不同线路不同车站的所有设备的运行情况;但在车站级,只能观看本车站的网络拓扑图和设备情况;由于培训中心是相对独立的,它也只能看到培训中心本地的设备情况。

2.5 通信系统中的网络管理
在ISO标准中,其定义了五种不同网络管理类型,分别是故障管理、配置管理、性能管理、安全管理与计费管理。ISO标准所定义的网络管理相较于城市轨道交通项目中对于DCS通信系统的网络管理更加全面,那么DCS通信系统所需要的网络管理是囊括了ISO定义中的故障管理、配置管理以及性能管理,旨在通过监控与管理等手段保障网络传输的性能。这就对网络管理软件所需具备的功能进行了确立。城市轨道交通中所需要的DCS网络管理软件需要具备对通信设备的性能、配置以及故障具备管理功能,这体现在对于通信设备的协议、连接、硬件参数以及软件信息的管理上。
总结下来,对于网管软件的需求就可以总结为:
针对城市轨道交通项目中的网络管理软件需求,可以总结为须具备性能、故障与配置管理的三方面能力。

2.6 网管软件的选择 - Zabbix
选择Zabbix这款网管软件的契机源自于旧款网管软件的License到期。在筛选新网管软件的过程中,经过几轮对比,最终选择了Zabbix。以下内容,就针对新与旧两款网管软件做一个简单对比。
- 旧款网络管理软件
之前所使用的旧款网管软件,源于美国。客观地说,它在对通信设备的性能管理、故障管理以及配置管理等方面是非常全面的。该款软件界面直接采用拓扑图的方式对设备进行展示,方便用户查看设备状态与设备之间的连接状态。但是出品于上世纪90年代的产品还是相对老旧:配置参数项的查询还需要通过文档配置;设备配置菜单老旧,操作繁琐;针对设备Trap告警无解析。总结下来,老款网管软件虽功能齐全,但整体已经落后于时代。
- 新款网管软件Zabbix
2020年年中,我们放弃应用旧款网络软件,开始应用Zabbix作为网络管理产品应用于项目中。作为第一款我们所接触的开源软件,从安装、调配、测试到实际应用,还是耗费了一定的人力、物力来完成,所以想要熟练的使用以及应用Zabbix是具备一定的门槛的。但经过多年应用下来,Zabbix出色的功能以及稳定性得到很好的印证。相较于旧款网管软件,总结下来,Zabbix作为DCS通信系统的网管具备如下:

经过多年的实际应用之后,除了上述其软件自身带来的优点之外,Zabbix也优化提升了DCS网管的整体功能以及监管范围。
1. 设备管理范围的扩大。
在应用Zabbix之前,DCS系统的网络管理主要负责骨干网的通讯设备以及轨旁和车载的通讯设备。可以说,网管的主要业务范畴集中在通信系统内,监控骨干数据传输网的数据传输性能。但是在应用Zabbix之后,其出色的系统稳定性使其他子系统业务也同意将其系统内的通信设备纳入进Zabbix的监控之中。近期,网络安全设备的监控也逐步加入Zabbix网管的监控业务内。
2. 优秀的系统架构与开源模式带来的成本节省。
得益于Zabbix优秀的B/S架构,我们可以在正线只部署一台服务器,在车辆段、试车线和停车场就可以部署工作站,不需要安装任何软件就可以通过内网,浏览器登录直接查询设备状态与信息。在费用方面,以往采用旧款网管软件时,正线需要购买一个server license,车辆段、试车线及停车场如有登录需求,则需要另行购买client,总体费用还是非常高昂的。采用Zabbix之后,不仅节省了我们产品开发上的成本,对于项目而言,也是节省了一定的经费。
3. 用户权限管理满足项目的查阅需求
在网管权限方面,旧的网管软件只能分清查看的权限及管理的权限。而Zabbix可以创建用户组、拥有不同权重的用户。对于一条完整的线路来说,通过Zabbix设置Administrator级别的用户,在控制中心就可以纵览整条线路的状态;设置管理级别的用户,可以做到方便车站的运维人员查看本地车站的设备以及网络拓扑图。如此精细化的配置,方便不同角色用户查阅的同时,可以保证网管配置的安全与稳定。
三、基于Zabbix的网管产品开发与应用
3.1 功能与平台
在明确DCS通信系统网络管理所具备的监控类型与监控对象的情况下,DCS通信系统网络管理的功能需要具备:
1. 对通信设备的性能管理功能。性能管理主要体现在如下四个层面,分别是:
2. 对通信设备的故障管理功能。故障管理功能从两方面来实现,分别是针对设备的重要性能参数设定触发器,根据关键参数阈值进行告警;其次就是通过接收设备SNMP Trap进行触发器的告警。
以上两种管理类型通过Zabbix都可以完成,但是对于配置管理的实现,就需要另一款开源的平台软件,Ansible Semaphore来完成。
3. 对通信设备的配置管理。面对大数量的设备,维护工作不仅工作量大且极其繁琐。在我们所经历的项目中,都会提出对设备可以进行批量操作的需求,这类批量操作普遍包括对目标设备配置的上传与下载、固件的上传更新与设备重启。在应用Semaphore之前,我们通过Python语言的Netmiko编制了一款软件,用于完成配置管理。但在Windows操作系统运行下,软件缺乏稳定性,且成功率不高。较之Linux操作系统下,使用的效果可以说是很差了。因此,我们一直在寻找一套行之有效的替换方案,直到使用Ansible Semaphore,才根本解决了稳定性的问题。

3.2 监控模板的制作
由于我们所使用的设备来自不同厂家,也包含众多不同型号,所以单单依靠Zabbix本身自带模板无法满足日常的监控需求。因此,我们通过各厂家所提供的MIB文档,根据其OID针对需求定制监控模板。
一个完成的设备监控模板需要完成两部分功能,分别是通过SNMP Agent实现对参数项的定时轮询,且根据设定的阈值进行相应的预警;另一功能则是接收设备发出的Trap信息,解析其内容并进行告警。
SNMP Agent自定义的轮询
SNMP协议,是辅助我们完成网络管理的最基础方式之一。通过设备所定义的OID,Zabbix可以在规定的时间内采集参数。目前,我们对于主动轮询获取的参数需求主要集中在设备端口相关性能以及设备自身软硬件信息上。
1. 交换机/路由器设备端口参数
设备端口参数的采集是依靠公有OID来实现的。所谓的公有OID,可以应用于所有厂家的产品。通过公有OID采集的端口性能参数主要包括:当前端口流量、数据包输入与输出、丢包数量。那么,依靠这些可采集的参数再加上Zabbix本身具备的计算功能,我们便可得出端口当前的利用率、误码率以及丢包率。
通常,路由器设备的端口数量不多,那么我们可以通过创建单个参数项来完成这项功能。如果面对多端口的交换机,一个一个的去创建便显得十分繁琐。这时,我们就需要依赖Zabbix出色的自动发现功能,来完成对设备端口的参数项采集。在自动发现功能内,Zabbix所提供的内容也是十分丰富的,这些内容足以帮助我们达到理想的效果。
2. 设备的软硬件性能参数
设备软、硬件性能参数的采集是依靠私有OID来实现。面对不同的厂家,需要根据其提供的MIB文档创建对应的监控项。同时,依托Zabbix的触发器功能,可以订制阈值根据自身需求进行告警。与旧款网管软件相比,Zabbix在监控项的轮询间隔配置上更加灵活,可以根据现场需求、设备承载能力以及设备总数进行灵活调配,增加系统容错率,避免出现轮询不及时无法确认问题以及轮询频率过快导致设备宕机的情况发生。
3. SNMP Trap告警
在我们的系统中,接收设备发送的Trap是非常重要的一项功能,这有助于我们实时的去了解设备的故障信息,以保证所有设备的正常运行。接收与解析的Trap内容,主要集中在通信设备的状态告警,如端口状态的变化、电源状态的异常、性能的异常情况等;通信设备的安全告警,如设备配置的变动、异常的登录等。相较于旧网管,Zabbix高度的自定义,可以帮助我们更好的解析Trap内容,调配告警条目中所包含的内容,以及添加更多信息用于帮助运维人员快速定位以及解决问题。我们启用的Zabbix接收SNMP Trap方式为官方的Perl脚本形式,考虑到目前设备监控模板已具备一定的数量,遂没有改用snmptt的方式。

3.3 NMS产品管理流程
从产品层面来讲,我们公司内部对于应用于项目的产品有一套严谨的产品发布流程,且每次的发布都遵循一定的时间周期。对于上一版本发布的产品,经项目反映的问题,在经过调整以及测试之后,于下一个版本进行发布。这就要求如果DCS网管软件具备一定的数据导出功能,这样就更能方便我们的产品发布。Zabbix对于模板的导出,就非常满足我们对于数据导出的需求。每次产品发布前,我们可以修改模板中的不足,并导出保存,于下一版本的产品发布中进行发布。

从项目发布层面来讲,Zabbix对于主机数据、拓扑图数据的导出功能能够满足公司对于项目数据发布的需求。通常,由系统设计人员完成对主机与拓扑图的配置,之后将相关数据导出,交由测试人员完成测试,确保功能的完整性,之后在发布于项目,由项目调试人员完成网管软件的安装、数据的导入功能。
可以说,Zabbix有关模板、主机数据以及拓扑图的导出功能,完全照顾了有数据发布、测试以及安装需求的用户。
3.4 产品安装方式及软件版本选择
众所周知,Zabbix拥有多种不同方式的安装渠道。用户可以根据自己的安装环境选择合适的安装方式。在我们应用Zabbix初始,只考虑我们产品开发人员本身认为的简单、方便的方式进行安装,便选用了Docker的方式。但是,我们忽略了,现场调试人员对于Linux操作系统以及Docker并没有基础的认识或者了解,结果导致现场安装问题频出:安装不成功、安装后配置不正确。这让我意识到,开发人员所认为的“便捷”,对于不具备相关经验的调试人员来说,并不便捷。在这种情况下,我们后续更改了安装方式,直接采用虚拟机安装的方式,使得调试人员可以直接安装运行。在后续更新的版本中,我们更优化了安装方式,提升其自动化部署能力,调试人员可在现场输入本地IP地址,即可完成安装。
安装的方式并无好坏,只有合适与否。所以我们在考虑产品应用时,应切身的从使用者角度出发,选择真正适合他们的方式来完善产品的应用。在经过五年的使用后,我们对于Zabbix的功能以及配置已经具备的一定的认识,再加之新的项目需求,使得我们又可以再次使用Docker这种安装方式来完成Zabbix的安装。
至于Zabbix的版本选择上,我们于2020年开始应用Zabbix,彼时正值Zabbix发布5.0版本,因此5.0版本成为我们所主要应用在项目上的版本。我们的项目最优先考虑的便是系统的稳定性,所以至今,我们也未曾升级大版本,以升级5.0小版本为主。
3.5 应用 - Grafana
为了向用户提供更好地数据展示,我们应用Grafana为用户提供基础设备和设备端口为单位的数据展示。
首先,用户可以通过Zabbix前端的拓扑图观察网络拓扑中设备的状态。通过拓扑图添加的对应设备的Grafana链接,用户可以从网络拓扑层级,进入到设备层级,查看对应设备的数据,包含端口运行状态、告警列表、设备性能参数等。而通过点击该界面的端口,用户还可以进入到端口层级来查看端口相关的性能参数。

3.6 应用 - Ansible Semaphore
如文章开头所说,我们对于网管软件的要求,不仅仅要求对设备要完成性能与故障的管理,还要求具备配置管理。这就要求我们必须具备对通信设备具备配置上传、下载的功能。这一功能的实现,主要是基于Python语言下的Netmiko模块。该模块,支持通过SSH协议完成对目标设备的一系列命令操作。在应用Netmiko实现配置功能之出,经由我们团队开发的软件实现对通信设备配置的上传、下载。但经过长时间的应用发现,在Windows环境下运行经常出现断联或者延时长等问题。因此,我们迫切的需要一个稳定的环境来实现配置管理功能。后续,我们将该功能移植到了以Ansible为基础的Semaphore平台。该平台不仅仅具备友好的UI界面,同时运行起来也十分稳定。

这里对Netmiko的应用简单做一个扩展说明,当我们应用Netmiko在非官方支持列表中的设备时,无需担心设备类型不符合的问题。在我们自己所使用的众多品牌中(非华为、思科),其命令行的模式脱不开两大厂家,所以只需多多尝试,反复应用即可找到对应的设备类型。如下图所示,该设备为一小众品牌,但是我们可以采用基于思科的设备类型来运行脚本,仍然可以做到正常运行。

四、现阶段面临的新挑战
随着国内对于信创的大力扶持,国内项目增长略显疲态、行业内竞争愈发激烈,我们使用Zabbix这款开源软件也面临着越来越多的挑战。
1. 国内厂商竞争激烈,“手段”层出不穷
近几年接触的国内厂家越来越多,发现厂家对于软硬件的捆绑愈发厉害。其操作不乏像:删减MIB文档内容,减少可参考信息。对于通信设备监控模板的制作,由厂家提供的MIB文档是至关重要的。但是某些厂家对MIB文档进行删减,减少可参考的OID信息、减少TRAP告警类信息,这种操作着实让人头痛;更有甚者,对MIB文档中的Trap信息进行加密,全部用加密后的信息进行展示。面对国际日益紧张的局势,国家从政策层面推举信创本是明智之举,但我想不应该成为如此局面。合理、公平的竞争环境才有机会造就更优秀的产品。
2. 业主层出不穷的新需求
随着各厂家网管产品的迭代,业主对于网管软件的需求也不仅仅停留在数据的采集层面。近些年,业主也提出了新的需求,有关于数据的展示、数据的导出以及3D设备图。类似的需求,反映出了业主在对比多款软件后,对自身的需求更加清晰,也更加明确怎样的功能能够辅助他们完成平日的运维工作。我认为,这也表明了在这个行业中,网管软件应该发展的方向或者说应该所具备的功能。

3. 国内涌现的国产监控软件与开源监控方案
如上述内容所描述的那样,越来越多的国内业主注重数据的展示功能,且基于信创的大前提下,国内出现了许多的国产软件。结合国家政策,这些软件厂家也努力进行推广,对国外软件形成“围攻之势”。这无疑对像Zabbix这类的国外开源软件形成了较大的挑战。
经过多年的应用,Zabbix出色的稳定性以及自定义功能无疑是其最出彩的内容。更何况,Zabbix也在丰富其功能,在8.0版本即将迎来更多“与时俱进”的新功能。所以我想,风险与机会并存,无需“随波逐流”,只专注于自身的提高即是最好的破局之法。
最后,感谢Alexei先生能够研发出Zabbix如此出色监控软件。同时也感谢编写《Zabbix 企业级分布式监控系统》的吴兆松老师,这本书也对我们了解以及使用Zabbix提供了非常棒的参考资料。