基于Zabbix和微信企业号实现网络监控的研究

2017-09-03 10:10刘远超李树彬
山东科学 2017年4期
关键词:消息运维监控

刘远超, 李树彬

(1.山东警察学院现代教育中心,山东 济南,250014;2.山东警察学院交通管理工程系,山东 济南,250014)

基于Zabbix和微信企业号实现网络监控的研究

刘远超1, 李树彬2

(1.山东警察学院现代教育中心,山东 济南,250014;2.山东警察学院交通管理工程系,山东 济南,250014)

本文提出了Zabbix和微信企业号结合的方法,实现告警信息的即时推送。二者的有效结合,可以大幅度地提升网络运维的管理效率,保证网络的高可用性和持续性,从而为运维自动化提供帮助。

网络监控;Zabbix;微信企业号;触发策略

2.Department Traffic Management Engineering, Shandong Police College, Jinan 250014, China)

近年来,信息化不断深入到人们的工作、学习和生活的各个方面,因此而产生的数据量呈指数式增长,网络设备、服务器、业务系统、数据库等软硬件设备的纷繁林复杂总以及用户对IT业务的高可用性需求使得网络运维工作任务更加艰巨[1]。传统的网络运维仍然是由用户在使用过程中发现故障,然后通知网络运维部门,经过运维人员故障验证后再开始采取相应措施解决故障。这种被动、孤立的运维方式,不仅用户对网络的可用性提出异议,而且运维人员疲于处理各种故障、效率低下,即使加班加点地调试、部署、维护,也经常会因设备故障而导致业务中断,严重影响单位的正常运转[2]。部署高效可靠的网络监控系统,通过监视各种网络参数,并提供便捷、及时的通知机制让运维人员快速定位并解决故障,对于保证网络的高可用性具有非常重要的作用。

Zabbix作为一款企业级的开源网络监控项目,提供分布式系统监视以及网络监视功能,其高度集成的解决方案目前广泛应用于各行各业[3]。Zabbix是基于WEB界面,具有node和proxy两种分布式部署方式;能够监控几乎所有类型的设备;提供完善API,能够实现与其他运维管理系统的完美对接;提供开放接口,支持自定义告警,方便及时有效的通知发布,这对于构建分布式监控系统具有重要作用[4]。借助Zabbix,可以减轻运维人员繁重的网络运维管理工作,实现网络的高可用性和持续性。

Zabbix默认支持邮件告警功能,但是邮件接收不及时甚至容易被运维人员搁置。Zabbix可以通过外接短信猫或者调用短信网关方式实现短信告警,但是使用短信网关会产生费用。微信作为最大用户群体的即时通讯软件,方便快捷,其可用性和持续性已经获得用户认可。微信公众号提供了丰富的第三方接口,其官网也提供了详细的API文档,越来越多的政府机关、企事业单位和团体使用公众号来提供服务、推送消息[5]。Zabbix通过调用微信的免费接口,不仅可以实现告警零成本,而且可以及时高效地将告警信息推送给运维人员,以便及时处理。本文将Zabbix与微信公众号结合,实现对网络运行状态的监控。

1 Zabbix架构与配置管理

1.1 Zabbix架构

Zabbix主要由Zabbix Server、proxy、agent、web前端和数据库等部分组成[6]。其主要架构如图1所示。

图1 Zabbix架构示意图Fig.1 Architecture diagram of Zabbix

Server是Zabbix的核心组件,主要负责接收agent发送的信息数据,管理系统配置信息和历史数据。proxy即代理服务器,可视为Server的扩展部分,可以代替Server收集监控设备上的数据然后转发给Server,主要适用于分布式环境中[7]。agent部署在被监控设备上,主要负责收集监控数据并发往Server或proxy。Web前端主要是方便运维管理人员对Zabbix进行配置和查看监控设备的状态,通常和Server部署在同一台服务器中。Database主要用于存储收集的监控数据和Zabbix的配置信息。

1.2 Zabbix安装部署

Zabbix Server可以运行在Linux、Solaris、Free BSD等平台上,还需要一些第三方软件的支持,如Apache、PHP、数据库等。通常运行在LAMP环境下,部署比较简单、灵活。以LAMP为例,环境为CentOS7+Apache+MySQL+PHP,PHP需要添加部分插件支持[8]。

Server端部署包括Server包安装、MySQL安装及数据导入和Web前端配置。可以通过Zabbix官方网站获得Zabbix的最新版本及历史版本,目前最新版本为3.2.1。

Proxy端部署类似于Server端,同时需要在Server中配置proxy并将其自身添加到监控设备中。

agent端分为Linux和Windows两种不同系统的安装。Linux下可以直接采用yum安装最新版本的RPM包,采用RPM方式安装比较简单,结合自动化配置工具,适用于监控规模比较大的场景。Windows下可直接下载exe执行文件,修改zabbix_agent.conf并添加到开机启动。

1.3 Zabbix配置管理

Zabbix配置流程如图2所示。

图2 Zabbix配置流程图Fig.2 Flowchart of Zabbix configuration

被监控设备称之为主机,可通过IP指定。主机可以通过SNMP、agent、IPMI等多种方式与服务器通信,对于网络环境而言,目前绝大多数的网络设备都支持SNMP,配置简单方便、协议公开,适用于网络监控环境中[9]。条目作为特定的监控数据,来源于被监控主机,是整个监控数据收集的核心。触发器可以理解为表达式,通过预设阈值方式与监控数据比较,当条目中接收到的监控数据在阈值范围之内,触发器状态为OK,当监控数据超过阈值时触发器状态变为Problem。事件为关注事件,例如触发器状态变化、主机上线等。行为会预定义特定事件发生的处理机制,如当条目的数据内容异常引起触发器状态变化时,行为执行相应的动作。媒介指监控数据异常时的通知机制,通过与微信(WeChat)的结合可以及时高效地通知运维人员处理。Zabbix作为分布式监控系统,优势之一在于提供了自动发现功能,可以自动发现并添加主机,这对于大规模的网络管理非常有帮助。模板用于快速定义主机的预设条目集合,是主机中共性的抽象,主要包含了条目、触发器等项目,可以直接关联至主机,当模板关联至某个主机时,模板中包含的所有项目都会被添加到主机中。实际网络环境中,许多主机都有相同或者类似的属性,利用模板可以避免重复性工作。

2 微信企业号注册和配置

在智能化越来越普及的今天,微信作为目前最主流的即时通信软件,几乎装备了所有的智能设备。微信公众平台是为个人、企业和组织提供服务与管理的全新服务平台。目前主要分为订阅号、服务号和企业号。订阅号主要是构建与用户之间的沟通与交流,聚焦于信息传播方式,旨在为用户提供信息和资讯,适用于个人、企业和组织。其消息显示在“订阅号”文件夹中,每天可以群发1条消息。服务号主要是为企业和组织提供新的服务途径,侧重于服务和用户管理能力,旨在为用户提供服务,适用于企业和组织。其消息直接显示在好友对话列表中,每月可群发4条消息。企业号主要服务于企业和组织内部,帮助建立员工、合作伙伴与业务系统之间的关联,适用于企业和组织。消息直接显示在对话列表中,每天可群发消息数量为帐号上限数×30人次,每条消息长度不超过600字。企业号可以开启二次认证功能,对于通过身份认证的用户方可让其关注成功,极大地提高了企业号的信息安全。目前腾讯对企业号仅收取每年300元的认证费用,各项服务均为免费,利用企业号推送Zabbix的告警信息,费用成本较低。运维人员关注关联Zabbix的企业号,通过身份认证后关注成功,告警信息推送到运维人员微信端,既保证了消息推送的及时高效,又保证告警信息不会外泄,提高了信息的安全性[10]。

微信企业号申请注册地址为https://qy.weixin.qq.com,帐号主体类型为团体时,可免于上传营业执照。企业号申请成功后,登录管理平台,在组织架构中添加运维管理部门及接收推送消息的运维人员,如图3所示。

图3 企业号添加部门和人员Fig.3 Department and personnel added in WeChat enterprise accounts

部门和人员添加完成后,接着创建应用。告警信息主要是通知发送,内容为文字描述,因此创建消息型应用。应用的可见范围选择运维管理部门。然后对此应用进行权限设置,如图4所示。其中注意CorpID和Secret 两个密钥,CorpID是企业号的标识,Secret是管理组凭证密钥。Zabbix调用微信的脚本中会利用CorpID和Secret生成token,通过token发送消息。配置完成后,可以根据微信官网提供的API进行测试。微信官网还提供了接口调试的工具,地址为http://qydev.weixin.qq.com/debug,可帮助验证结果。

图4 权限设置Fig.4 Permission setting

3 Zabbix关联企业号

Zabbix搭建完成和企业号申请完成后,还需要在Zabbix上配置,使其调用企业号进行消息推送。

3.1 Zabbix调用企业号

Zabbix调用企业号的脚本的路径为/usr/local/zabbix/share/zabbix/alertscripts,其脚本内容如下:

#!/usr/bin/python

import urllib,urllib2,json

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

defgettoken(corpid,corpsecret):

gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + CorpID + '&secret=' + Secret

printgettoken_url

try:

token_file = urllib2.urlopen(gettoken_url)

except urllib2.HTTPError as e:

printe.code

printe.read().decode("utf8")

sys.exit()

token_data = token_file.read().decode('utf-8')

token_json = json.loads(token_data)

token_json.keys()

token =token_json['access_token']

return token

defsendMessage(access_token,user,subject,content):

send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token

send_values = {

'touser':touser,

'toparty':'2',

'msgtype':'text',

'agentid':'2',

'text':{

'content':message

},

'safe':"0"

}

#send_data = json.dumps(send_values, ensure_ascii=False)

send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')

send_request = urllib2.Request(send_url, send_data)

response =json.loads(urllib2.urlopen(send_request).read())

printstr(response)

if __name__ == '__main__':

user =str(sys.argv[1])

subject =str(sys.argv[2])

content =str(sys.argv[3])

CorpID = 'CorpID'

Secret = 'Secret'

accesstoken = gettoken(CorpID, Secret)

sendMessage(accesstoken,user,subject,content)

其中,CorpID是企业号的标识,Secret是管理组凭证密钥,在申请完企业号后即可获得CorpID和Secret。toparty指部门id。msgtype指消息类型。agentid指企业号中的应用id,可在应用的设置页面查看。sys.argv[1], sys.argv[2],sys.argv[3]是Zabbix传递给脚本的参数。

3.2 Zabbix添加Media

在Zabbix平台上添加微信的告警媒介Media和动作Action,如图5所示[11]。

图5 Media和Action设置Fig.5 Setting for Media and Action

设置完成后,可通过主动发出告警事件测试消息推送。

3.3 网络监控实例

本文通过虚拟化搭建监控环境,配置为CentOS 7+mysql+apache+PHP,Zabbix版本为3.0.5。由于监控主机相对较少,且分布较集中,因此搭建了1台Zabbix服务器。目前通过SNMP方式监控交换机90多台,监控条目700余条。网络拓扑如图6所示。

图6 网络拓扑图Fig.6 Network topology

通过Zabbix平台监控某互联网出口的一天的流量状态如图7所示。因主机故障通过微信企业号推送的告警信息如图8所示。

图7 某互联网出口的一天流量图Fig.7 Daily traffic map of an Internet export

图8 微信企业号推送的告警信息 Fig.8 Alarm message pushed by WeChat enterprise accounts

4 结语

本文通过广泛使用的微信企业号及时推送告警信息,使用开源监控项目Zabbix检测网络状态,可以实现对网络运行状况的有效监测。通过配置不同的触发策略,能够监测几乎所有网络设备,并可根据设备重要程度推送不同级别的告警信息。通过微信企业号推送告警信息具有高效性通知,但成本几乎为零。该研究为网络运维的自动化提供了有效的支撑手段。

[1]蒋东兴.我国高校信息化发展状况与对策建议[J].中国信息界, 2011(09):20-22.

[2]刘慧敏.以ITIL为基础的IT服务管理应用研究[J].计算机技术与发展, 2012,22(5):195-197.

[3]VLADISHEV A. Open source enterprise monitoring with Zabbix[C].Open Source Data Center Conference, Nurnberg. 2009, 60.

[4]TADER P. Server monitoring with Zabbix[J]. Linux Journal, 2010(195):7.

[5]周解敏.微信公共平台的营运开发—关于企业号的实践与应用现代经济信息[J].现代经济信息,2015(10):153.

[6]Zabbix LLC. Zabbix Documentation 3.0 [EB/OL].[2016-10-1].https://www.zabbix.com/documentation/3.0/manual.

[7]吴兆松.Zabbix企业级分布式监控系统[M]. 北京:电子工业出版社, 2014.

[8]MESCHERYAKOV S V, SHCHEMELININD A. Analytical overview of Zabbix international conference 2013 [J]. SPbSPU Journal. Computer Science. Telecommunication and Control Systems, 2014, 1(188):91-98.

[9]郭晓慧, 李润知, 张茜,等.基于Zabbix的分布式服务器监控应用研究[J]. 通信学报,2013(S2):94-98.

[10]腾讯公司. 微信JS-SDK说明文档[EB/OL].[2016-10-1].http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5.

[11]姚仁捷. Zabbix监控系统深度实践[M].2版. 北京:电子工业出版社, 2014.

Research and implementation of network monitoring based on Zabbix and WeChat enterprise accounts

LIU Yuan-chao1, LI Shu-bin2

(1.Department Modern Education Center, Shandong Police College, Jinan 250014, China;

∶A combination method of Zabbix and WeChat enterprise accounts was proposed in this paper to realize the instant pushing of alarm information. With the effective combination of Zabbix and WeChat enterprise accounts, it can greatly enhance the management efficiency of network operation and maintenance, and ensure high availability and persistence of network, thus providing assistance for the automation of network operation and maintenance.

∶network monitoring; Zabbix; WeChat enterprise accounts; trigger straegy

10.3976/j.issn.1002-4026.2017.04.020

2016-11-22

山东警察学院科研计划(YKJYB201604);山东省高等学校科技计划(J17KA211);山东省公安厅科技专项(GATHT2015-236);济南市社会民生重大专项(201509005)

刘远超(1987—),男,助理实验师,研究方向为网络管理,网络安全。E-mail:lyc136564@163.com

TP393

A

1002-4026(2017)04-0124-07

猜你喜欢
消息运维监控
The Great Barrier Reef shows coral comeback
一张图看5G消息
运维技术研发决策中ITSS运维成熟度模型应用初探
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
风电运维困局
杂乱无章的光伏运维 百亿市场如何成长
基于ITIL的运维管理创新实践浅析
PDCA循环法在多重耐药菌感染监控中的应用
消息