摘 要:为了及时发现隐患和故障,提高高校数据中心的运维效率,需要对数据中心软硬件系统的性能、状态、日志等进行监控。文章以ELK为数据采集和存取平台,并借助Shell脚本强大的系统管理功能,设计了监控代理,实现了在监控平台中对多数据源的处理。經过实践,文章设计的监控平台,能实现高校数据中心的多层面监控,为数据中心高效管理提供支撑。
关键词:数据中心;ELK;运维监控;监控代理
中图分类号:TP391 文献标志码:B 文章编号:1673-8454(2020)07-0093-04
一、引言
由于受到运行环境、设备生命周期、系统变更、系统漏洞、系统性能、网络功击,以及人为误操作等影响,数据中心的基础设施和软硬件系统,在运行过程中经常出现隐患和故障。通过多层面监控,能及时发现这些隐患和故障,提高运维效率,为数据中心的安全、稳定、可持续运行提供保障。因此,数据中心多层面监控意义重大。
系统性能和运行状态能反映出设备运行的稳定性和可持续性。系统日志记录了系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。运维人员可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹[1]。因此,数据中心运维监控,不仅要监控系统性能和运行状态,还要监控和分析系统日志。
由于高校数据中心运维,受到成本控制的影响,一般会采用开源监控平台来实现数据中心监控。当前大多数数据中心采用Zabbix、Splunk等开源平台来实现监控。随着ELK功能不断完善,也被一些数据中心用来作为监控平台和日志处理平台。这些监控系统,虽然性能优秀,有些功能非常实用,但从高校数据中心多层面监控角度来看,或从易用性角度来看,还有必要改进,或在此基础上进行运维开发,实现全面监控,以进一步提升监控水平。由于ELK性能较好,开放程度较高,开发接口丰富,本研究以ELK为基础,进行架构设计和数据中心运维开发实践。
二、ELK简介
ELK是ElasticSearch、Logstash、Kibana三个开源软件的简称,是一个日志实时处理平台[2]。ELK之间的合作机制为:
Logstash作为信息收集者,用来搜集、分析、过滤软硬件系统的日志。它支持大量的数据获取方式,工作方式为C/S架构。通过把客户端(Beats)程序安装在计算节点上,或者在网络设备或存储设备中配置Syslog、SNMP Trap等功能,来实现日志或性能数据的过滤和处理,然后将其处理结果推送到ElasticSearch 平台。
ElasticSearch作为数据的保存者,保存来自Logstash收集的数据,同时提供数据操作的API,以及ElasticSearch集群管理。
Kibana 是为 ElasticSearch设计的开源分析和可视化平台。主要用来搜索、查看存储在 ElasticSearch索引中的数据,并通过HTML5技术在浏览器端实现数据可视化。
ELK的Beats是采集系统监控数据的Agent,它可以发送不同类型的数据到ElasticSearch中,也可以行将采集完的数据发送到Logstash中转,然后再推送到ElasticSearch中。Beats包含多种工具,如:采集网络流量数据的Packetbeat;采集文件数据的Filebeat;采集 Windows 事件日志数据的Winlogbeat;采集系统级监控数据的Metricbeat等等。
ELK的架构如图1所示。
三、ELK在数据中心多层面监控中的不足
尽管ELK整体性能和功能较好,但经过笔者对ELK平台的运维开发实践,发现它在数据采集及可视化方面存在不足。数据采集方面,尽管结合Beats能采集到IT设备的日志和性能数据,以及SNMP Trap等信息,或通过Logstash插件的方式采集其它信息,但是,这种方式不能够获取较为全面的监控数据。例如:采用Winlogbeat采集Windows Server系统日志时,只能采集到事件日志,不能采集到事件跟踪日志;目前还不支持一些常用的应用程序或服务(如Tomcat、Weblogic等等)的性能数据和运行状态的采集;尽管Logstash提供了插件方式采集数据,但是通过这种方式采集空调、UPS等基础设施的运行状态相关数据,以及服务器虚拟化及虚拟机运行状态时难度较大。在可视化方面,Kibana应用可定制性和可扩展性较差,无法通过它对非Logstash收集的数据(如上述基础设施的运行状态数据)进行可视化展示。
四、高校数据中心多层面监控开放平台设计
1.高校数据中心运维对象
高校数据中心支撑着学校的教学、科研、管理及服务等信息化,一般会配备功能完善的软硬件设施。根据当前高校数据中心管理模式及运营模式,其架构包括三个层次:底层为承载IT设备安全、稳定运行的基础设施,如空调、UPS、温湿度、门禁、消防等硬件设施;第二层为IT设备层,是提供IT服务的核心,包含多种设备,如数据存储设备、服务器、数据备份设备、网络设备、安全设备、负载均衡器、高性能计算平台等硬件资源;第三层为数据中心的软件系统,如操作系统、云平台、大数据平台、数据库、中间件、应用程序等软件资源。这三个层面的软硬件设施均属于运维对象。
2.计算节点监控代理研究
ELK 的Metricbeat工具可以获取操作系统的 CPU和内存使用率、文件系统、磁盘 IO 和网络 IO等统计数据,它也支持多种模块,比如Apache、HAproxy、MySQL、Nginx等[3]。
Metricbeat虽然能收集多项性能数据,也支持多个模块,但目前还不支持一些常用的应用程序或服务。例如:当前最新版本仍然不支持高校数据中心常用的Tomcat、Weblogic等Web中间件的监控,也不支持Linux KVM、Windows Hyper-V服务器虚拟化平台的监控。另外,由于数据中心需要监控的对象较多,如果都采用logstash来处理数据,将会增加Logstash的运行压力。因此,需要一个功能全面、开放性好的监控代理作为计算节点监控工具的补充。通过使用该代理,不仅能收集操作系统的性能数据,也能收集当前Beats不支持的应用程序或服务的性能数据,同时能分担Logstash的运行压力。
2.SMonCgi实现
Windows Server系统的SMonCgi采用基于.Net Framework技术,用PowerShell编成实现[6]。当SMonCgi接收到客户端发起的数据采集需求时,SMonCgi去执行PowerShell脚本文件。在PowerShell脚本文件中执行PowerShell的Cmdlet或自定义函数(通过PowerShell脚本模块实现),并对Cmdlet或自定义函数的执行结果格式化后返回给客户端。
Linux系统的SMonCgi采用C语言实现。底层用的是面向链接、可靠的字节流传输TCP协议,同时应用Sock编程、多线程编程、管道、CGI等技术。当SMonCgi接收到客户端发起的数据采集需求时,SMonCgi去执行Shell脚本文件。在Shell脚本文件中执行Linux系统命令,并对命令执行结果格式化后返回给客户端。
SmonCgi通过指定Client地址,达到限制访问的目的,增强该SMonCgi访问的安全性。
3.IT硬件资源SNMP Trap和syslog配置
就服务器而言,先进行服务器管理端口的网络配置,然后通过在远程管理模块(如HP服务器的iLO、DELL服务器的iDRac等)中启用SNMP Trap 和Syslog服务,并指定目标IP和端口(与Logstash相关配置一致),即可收集到报警信息和系统日志。就网络设备、存储设备等而言,可通过Console口或Web管理页面进行与上述服务器类似的相关配置。
通过在计算节点中安装SNMP 客户端,结合SNMP get等命令,编写CGI脚本(如获取存储系统性能的脚本)。在监控平台中请求SMonCgi执行该脚本,即可获取相关数据。
4.监控平台开发实践
该平台采用“Maven+Spring+SpringMVC+Hibernate+Mysql”整合开发框架实现后台开发,并采用ElasticSearch Java高级别REST客户端(The Java High Level REST Client)开发ElasticSearch相关应用,实现索引及文档的增删改查功能。前端采用HTML5,并结合JQuery及其多种组件实现监控平台数据的可视化。
六、结束语
本文对ELK日志分析平台进行了研究及实践。在多个IT设备上,根据实际情况,部署Beats,配置Syslog和 SNMP Trap实现了性能数据、告警信息和系统日志采集。并结合ELK在数据中心监控方面的不足,设计了开放性较好的计算节点监控代理程序SMonCgi,并把该代理程序部署在Linux系统和Windows Server系统中,进行性能数据的收集。根据高校数据中心针对不同层面的软硬件设施运行状态、性能数据、报警信息、系统日志的采集及处理实际要求,提出了一种多层面监控的开放平台架构。最后对该架构进行实践。经过实践,本文设计的监控平台,能针对不同层面、不同监控目标,采用不同技术手段实现监控,为高校数据中心高效管理提供支撑。
参考文献:
[1]百度百科.系统日志[EB/OL].https://baike.baidu.com/item/系统日志/9389581?fr=Aladdin.
[2]周映,韩晓霞.ELK日志分析平台在电子商务系统监控服务中的应用[J].信息技术与标准化,2016(7):67-70.
[3][EB/OL].https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html.
[4]叶水勇.信息机房动力环境监控系统的研究与应用[J].東北电力技术,2019,40(8):18-21.
[5]百度百科.IPMI[EB/OL].https://baike.baidu.com/item/IPMI/2552078?fr=aladdin.
[6]潘春华.基于PowerShell脚本和轻量级Web服务的IT系统运维监控Agent设计与实现[J].网络安全技术与应用,2017(7):68-69,71.
(编辑:王晓明)