校园网基于Docker容器化的微信告警服务平台研究

2020-08-21 17:21:37 《电脑知识与技术》 2020年21期

周向军 吴挺

摘要:针对校园网监控告警存在多样化、实时性差、缺乏统一管理等问题,提出利用微信公众号建立校园网统一告警平台的方案,将智能运维监控平台分为数据收集层、数据展示层、数据提取层、报警规则配置层、报警规则配置层、展示层六个层次的设计架构,微信告警服务平台划为数据收集模块、数据提取模块和监控报警模块三个功能模块,在监控报警模块实现了与微信公众号对接,并提出利用Docker实现平台的容器化部署,该平台告警实时性强,对告警能统一管理,有效地解决平台的维护、管理及迁移等问题。

关键词:Docker;微信;告警平台;容器化

中图分类号:TP399 文献标识码:A

文章编号:1009-3044(2020)21-0001-04

开放科学(资源服务)标识码(OSID):;

近年来,信息化的发展水平成为高校核心竞争力要素之一,很多高校加大了校园信息化基础设施、各类教学、管理应用系统和数字化校园的建设投入。随着高校信息系统规模的不断扩大和信息化程度的提高,校园网用户对信息化的体验和依赖不断加深,对校园网的运维也提出了更高的要求,但是校园网的运维还存在着以下问题,

1 校园网运维现状分析

1.1校园网运维涵盖的内容多样化

校园网的运维管理工作是指校园网处于运行状态中,信息管理部门采用相关的管理方法,对运行环境的物理网络,软硬件环境、业务系统等进行维护管理,这种管理工作即是。因此校园网运维涉及的内容非常多,包括硬件运维和软件运维。而硬件运维又包括网络设备运维、服务器设备运维、存储运维等;而软件运维则更多,包括数据库运维、中间件运维、集群运维;更有众多的业务系统的运维,如校园网里常见的邮件服务器运维、学校网站群运维、OA系统运维等,少则十几个业务系统,多的达到几十上百个系统,这些系统可能分布在不同网段。它们很多是逻辑隔离的。

1.2运维监控的实时性较差

为了更好地管理校园网,监控预警是一种很好的机制。运维人员通过对各种设备、系统、业务等关键资源的自动监控,帮助运维工作者及时发现故障和故障隐患。只有保证校园网中各种硬件的可用及业务系统的正常运行才能使学校信息化建设发挥作用。随着高校信息化建设的发展,高校各种异构的信息化系统越来越多,所使用的网络设备和服务器数量也很多,原有的高校校园网监控方式存在以下的问题:第一,校园网需使用不同的专用软件监控各种设备,监控方式各不相同,无法在统一的平台上实现监控。另一方面,为了保障校园网的运作,各个学校都使用了不同层面的运维监控服务,如校园网网络设备的运维监控,服务器运行监控等。并且使用了短信或邮件等警告推送机制,但在实际运作中,效果一般。主要是推送的方式上,大部分的运维监控警告推送都依赖于短信平台或邮件平台,而管理员的邮件常是工作邮件,使用邮件推送造成过多垃圾邮件,日常邮件管理麻烦而且不能及时处理。而短信推送需要学校配置备相应的硬件,而且大量短信的发送也需要学校投入相应的资金。

1.3运维监控的平台多样化

由于硬件、软件众多,运维监控的设备及系统也就多了,不同的系统或者不同的硬件厂商都有着各自的运维监控警告机制。如云桌面的监控、网络设备的监控、业务系统服务器的监控等。不同的监控采用不同的警告推送,缺乏统一管理。

2 微信告警平台的实现方案

针对运维监控目前存在的问题,我们提出利用微信服务平台实现统一的微信告警服务的解决方案。微信服务平台的有着可随时随地提供信息和服务,且一对多传播,信息高到达率等特点,这些特点正是运维告警所需要的。采用微信服务平台,通过程序接口集中多个校园网络监控系统的监控警告推送,实现统一管理,便于运维人员随时随地,及时掌握校园网络的状况,有效解决校园网多平台监控警告推送的问题。

2.1微信告警服务平台系统设计

微信告警服务平台的架构设计可以分为6层,如图1:

第一层为数据收集层,主要收集网络设备、操作系统、数据库、信息化应用系统等数据,然后将规范化收集到的数据并进行存储。

第二层为数据展示层,主要是将底层获取到的数据进行统一展示,运维人员通过将数据图形化,能了解某段时间内网络或主机的运行趋势和运行状态,作为排查问题或解决问题的依据。

第三层为数据提取层,主要是提取符合条件的数据到监控报警模块,其主要功能是过滤处理和规格化对从第二层获取到的数据,这一层衔接监控和报警两个功能模块。

第四层为报警规则配置层,主要是进行设置报警规则和报警阈值,还有设置系统报警方式、报警联系人等。

第五层为事件生成层,主要是生成报警事件,并进行实时记录,存人数据库以备调用,报警结果能按运维人员需求形成分析报表,供运维人员统计一段时间内的故障率和故障发生趋势。

第六层展示层,主要将报警故障、监控统计等结果在Web界面进行统一展示,并实现多权限、多用户管理。

根据微信告警服务平台架构设计的六个层次,微信告警服务平台从功能实现划为三个模块,分别是数据收集功能模块、数据提取功能模块和监控报警功能模块,每个模块完成的功能如下:

数据收集功能模块:用于从网络设备、系统和服务收集指标,数据收集的方式根据设备或系统的不同而采用不同的采集方式,一般有通过SNMP实现,也有通过自定义脚本实现,还可以通過代理模块实现等。一般通过采集设备或系统的日志文件,也可以通过定时轮询DB或其他系统的接口,在数据收集的基础上还进行数据的图形展示。

数据提取功能模块:此模板主要通过数据收集模块提供的接口或自定义脚本完成数据的筛选过滤和采集,从数据收集模块提取需要的数据到监控报警模块中。

监控报警功能模块:监控报警模块包含告警子系统和数据库子系统,此模块主要完成报警规则和报警阈值设置、报警联系人设置等,并将相应规则写到数据库中,模块根据设置的规则进行告警信息的发送。告警子系统按监控脚本的设置,将告警信息通过微信平台发送到用户手机,或用户通过微信查询告警信息,了解设备运行信息。告警情况和设备运行信息将在数据库子系统进行备份。并能按运维者要求将报警结果进行集中展现,或查询历史记录。

2.2 微信告警功能的实现

微信公众平台主要包括订阅号、服务号和企业号三类账号。上述三种微信公众号有不同的特性,应用于不同场景。企业号与服务号和订阅号的其中一个区别是在消息的发送次数上没有明显限制,比较适合于微信告警服务平台告警使用。企业号可以将微信告警服务平台与成员微信相连接,实现告警移动化,实现良好的闭环流程。微信平台上提供多样的消息处理方式,针对文本消息,主要是客服消息、群发消息及模板消息。首先在群发消息的处理上,公众号为了避免对用户受到垃圾消息的骚扰,微信对相关接口做了限制,群发消息存在条数限制,不适用于告警平台的推送。而客服消息是没有条数限制的,但是需要48小时内用户主动发送消息,明显也不适用于告警消息的推送。而唯一能适用的就是模板消息。按官方解释模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。这种通知和告警服务通知的特性是相符的,适用于告警平台的推送。

微信企业号公众平台主要有以下几种消息模式:一是主动调用模式,主动调用模式主要实现微信消息的主动推送,是企业通过企业公众号向员工发送消息的模式;二是被动回调模式,被动回调模式包括平台对消息的接收、被动响应以及主动推送等,是个人向企业号发送消息及触发相关事件从而产生消息的模式,主动调用模式下的所有推送接口都可以在被动回调模式使用;三是基于JS-sdk的JSAPI模式,这是结合微信Js-sdk进行开发,基于微信内置浏览器的B/S手机网站模式;四是企业会话模式,是微信与企业自有即时通信软件进行消息对接的模式。在利用微信进行开发时,较多使用的模式为主动调用、被动回调模式还有基于微信的JS-sdk的JSAPI模式,较少使用企业会话模式进行开发,多以直接使用为主,本微信告警服务平台开发主要使用主动调用模式和被动回调模式。

2.2.1主动调用模式

微信公众号的主动调用是指用户应用主动调用企业号提供的系列API接口函数执行发送消息、管理用户等功能的操作。主动调用直接使用HTTPS协议,连接企业号提供的AM请求地址,使用UTF_8数据编码,采用JSON数据格式,不需要执行解密操作,该模式是企业号开发中最基本的连接模式。图3是微信消息主动调用模式的执行流程。

2.2.2 被动回调模式

微信公众号被动回调是指微信平台接受相应的事件时,按照之前配置好的参数主动请求你的由开发者自定义的业务逻辑接口。开发者要在文档中明确声明请求和请求体和参数,平台对自定义的业务逻辑接口进行适配。自定义的业务逻辑接口的作用类似于短信中心。用户通过订阅公众号,然后可以主动发送信息给公众号,发送的消息不是直接到达微信后台系统,而是通过转发回调机制,将通过统一格式的内容发送给接入的后台系统。因此,需要在正式使用前对账号进行配置,才能使用回调接口,图4是微信消息被动回调模式的执行流程。

3 Docker容器化技术在平台部署上的应用

微信告警服务平台能解决多平台告警统一管理的问题,但是如何解决校园网的部署迁移又是另一个问题。在校园网中,存在需要部署多个数据收集模块服务器采集不同网络硬件、系统、应用数据的现象,同时针对服务器虚拟化技术的发展,很多应用都转移到了Docker中,如何利用Docker容器化技术,对监控数据进行采取也是迫切需要解决的问题,因此我们提出微信告警服务平台Docker容器化的解决方案。

3.1 Docker高级容器引擎特性

Docker是使用Go语言实现的一个基于LXC( Linux Con-tainers)虚拟化高级容器引擎,是一种面向云平台的虚拟化技术。vSphere和Hyper-V等传统的虚拟化技术是建立虚拟机,即建立整套系统沙盒环境去执行应用。而Docker的盒执行环境是利用Linux容器技术将应用所需要的相关源码、依赖库、环境配置等都打包起来。与传统虚拟化技术相对比,Docker不需要虚拟化硬件,也不需要即时编译和指令级模拟。因此粒度更小、更轻量级。该技术通过将一个单独操作系统管理的资源分配到一个个孤立的组中去平衡资源使用需求的冲突,大大提升了资源的利用率。

Docker 一个容器的运行不会影响宿主环境或者其他容器虚拟化,这是因为Docker构建虚拟化技术是基于应用组件级进行,因此容器具有封闭性和独立性的特征。基于容器运行的Docker只保留了应用程序运行所必需的核心操作系统环境,而不像其他一些虚拟化技术并一样虚拟完整的Linux操作系统,因此它空间占用少、资源开销少、启动时间短、分发和复制方便,同时它也具备传统虚拟机的隔离性和安全性等特性。

3.2 Docker关键技术

在Docker的生命周期中,镜像(Images)和容器(Contain-ers)最核心的两个部分。Docker镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件。Docker的镜像是包括运行容器所需数据的一个独立的文件系统,是一个只读的模板,它类似虚拟机的镜像。可以用镜像来创建新的容器。而Docker容器类似虚拟机,是Docker镜像创建的运行实例。容器是相互隔离的,每个容器包含特定应用的代码及所需的依赖文件,可以运行特定的运用,可以执行包含启动,停止,删除等。因此可以把容器看作包含进程空间,Root用户权限,用户空间和网络空间等的一个简易版的Linux环境和运行在其中的应用程序。因此运行起来的鏡像就是容器,容器服务运行的过程中也可以提交回去(Commit)成为镜像,把安装了程序,添加了文件容器保存为镜像。如图5所示:

3.3 微信告警服务平台Docker容器化部署流程

(1)自定义Dockerfile指令集,Dockerfile配置文件支持灵活的自动化创建和部署机制,平台结合监控的实际需要,依据基础镜像,通过Dockerfile文件进行自定义方式,在Dockerfile指令集中增添相应命令,方便创建符合实际需求的Docker镜像。

(2)创建镜像,通过填写Dockerfile模板基本信息,修改Dockerfile的必要的信息,在服务器上执行通过数据校验后的dockerfile文件,执行成功生成Docker镜像。

(3)部署实例,部署实例功能是该平台的核心功能之一,所有的镜像文件都是为了生成Docker容器,每个部署实例对应着镜像运行的容器,容器是Docker的核心部分,部署实例包括创建实例、的修改实例、删除实例、升级实例等功能操作。部署实例的启动和运行通过挂载程序目录来实现。

(4)上传和下载镜像,为了方便镜像的使用和传播,可以将镜像上传到Docker官方提供的Registry开源平台仓库。

4 结束语

监控告警是校园网运维的重要环节,是提高运维效率的有力保障。統一的监控告警平台对于目前校园网多样的、复杂的运维环境是必要的。利用微信服务平台的随时随地提供信息和服务、一对多传播、信息高到达率等特点是适合校园网运维监控告警的。而实现告警平台与微信平台的对接需要根据微信服务号的消息特点,选择合适的方案解决两者的消息发送问题。而Docker虚拟化在平台的日常应用层面上,有效地解决平台的维护、管理及迁移等问题。

参考文献:

[1]神红玉.校园网运维现状及统一运维方案浅析[J].硅谷,2012,5(9):159-160.

[2]谢超群.基于Zabbix高校数据中心运维监控平台的建设研究 [J].长春大学学报,2018,28(12):44-47.

[3]刘静静,王光宇,监控与告警技术在信息系统运维中的研究与应用[C].中国计算机用户协会网络应用分会2017年第二十一届网络新技术与应用年会论文集,雄安,2017: 259-262,270.

[4]张瑞林,吴学敏.Docker容器技术在后端服务设计中的应用[Jl.电脑知识与技术,2019,15(13):281-282.

[5]郑远.基于Docker的服务器虚拟化实践[J].福建电脑,2019,35(4):108-110.

[6]张延冬,邢艳芳.基于Docker的运维平台设计[J].计算机时代,2018(4):16-18,22.

[7]冷泽伟.基于微信平台的设备远程告警系统[Dl.济南.山东大学,2019.

[8]邓乔.基于Docker的统一运维平台的设计与实现[Dl.南昌:南昌大学,2018.

[9]钟良侃.Docker技术在Web服务系统中的应用研究[J].电脑知识与技术,2016,12(26):123-126.

【通联编辑:王力】

基金项目:教育部科技发展中心产学研创新基金——新一代信息技术创新项目(2018A01006)

作者简介:周向军(1971-),男,广东人汕头人,硕士,副教授,研究方向:计算机网络、数据库、计算机多媒体;吴挺(1981-),男,广东湛江市人,硕士,讲师,研究方向:计算机应用。