基于ELK的高校数据中心运维多层面监控平台研究与实践
来源:用户上传
作者:潘春华
摘 要:为了及时发现隐患和故障,提高高校数据中心的运维效率,需要对数据中心软硬件系统的性能、状态、日志等进行监控。文章以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的运行压力。 Shell脚本具备强大的功能,它不仅能方便地管理操作系统,而且能管理部署在操作系统之上的应用程序或服务。
本文研究的计算节点监控代理(以下称为“SMonCgi”)基于HTTP服务和CGI技术实现。CGI能把Shell脚本執行结果返回给请求端。Windows Server系统采用PowerShell脚本实现HTTP服务,同时采用PowerShell编写CGI程序。Linux采用C语言编写HTTP服务,同时采用Linux shell编写CGI程序。
由于采用Shell脚本编写CGI程序,使得SMonCgi具有很好的开放性。当有新的监控需求时,只要被监控对象能采用Shell脚本处理,则只需要编写相关脚本,并把脚本放到CGI程序目录里即可实现监控。
3.多层面监控开放平台架构设计
结合当前高校数据中心监控存在的问题,本文设计的数据中心监控平台能实现多层面监控。它不仅能监控数据中心基础设施、IT设备、操作系统及其承载的应用和服务等多个层面上的软硬件运行状态,而且能收集他们的性能数据、报警信息、日志等。同时,监控平台应具备开放性,即对于新增的设备、应用和服务等的监控能够方便地部署到监控平台中。
(1)基础设施监控相关数据的获取
高校数据中心几乎都配备动力环境监控系统。动力环境监控系统利用RS232/RS485接口或采用IP网络或采用物联网与数据中心智能设备的设备驱动卡实现互联,再经过协议转换模块、信号处理模块、智能采集模块对所有监控设备进行采集,然后将所采集的数据保存到监控系统的数据库中[4]。
本文设计的监控平台,在管理节点中,利用JDBC和ElasticSearch API把动力环境监控系统后台数据库中的监控数据和实时报警数据定时导入到ElasticSearch索引中。
(2)IT设备监控相关数据的采集
IT设备的监控,不仅要能获取设备运行时的性能,还要能实时获取设备故障或告警信息,以及获取相关日志。
高校数据中心采用的网络设备、安全设备、数据存储与备份设备属于可网管设备。这些设备几乎都支持SNMP,也能提供Syslog服务。通过在这些设备的管理端启用SNMP Trap功能,并结合logstash 的SNMP Trap插件,可把告警信息采集到ElasticSearch索引中;通过在这些设备的管理端配置Syslog功能,并结合logstash 的Syslog插件,可把系统日志采集到ElasticSearch索引中;通过在SMonCgi中,利用SNMP get或SNMP walk命令,编写脚本,来获取设备的性能或状态数据,并存储到 ElasticSearch 索引中。
当前,几乎所有的服务器厂商均支持IPMI[5],或在在主板中集成远程管理模块,如DELL服务器的iDRac、惠普服务器的iLO、IBM/lenovo的IMM2等。这种远程管理模块,支持SNMP,能提供Syslog服务。和数据中心的其他IT设备一样,可以通过Logstash的SNMP Trap插件和Syslog插件把温度、电压、风扇工作状态、电源状态、RAID状态、磁盘状态等信息或相关日志采集到ElasticSearch索引中。
(3)软件系统监控相关数据采集
对于操作系统、应用和服务(如数据库、云平台、大数据平台、Web服务器等)的性能监控数据,通过Metircbeat工具采集。即:把ELK的Metircbeat工具部署在计算节点上,经配置后,以系统服务(Services)的方式运行该工具,定时把相关数据推送到ElasticSearch索引中。对于软件系统相关日志的收集,采用以下两种技术实现:①和Metircbeat一样,把ELK的Filebeat工具部署在计算节点上并运行,根据其配置,把相关内容推送到ElasticSearch索引中;②对于支持Syslog协议的软件系统,结合Logstash的Syslog插件,把Syslog数据推送到ElasticSearch索引中。
对于Metircbeat工具无法完成的应用和服务的监控,或无法通过ELK的Filebeat工具,以及不支持logstash的Syslog插件收集的日志,可采用SMonCgi实现。即在计算节点中,请求执行相关脚本,并把执行结果通过ElasticSearch API保存到ElasticSearch 索引中。例如:用Powershell编写Windows Hyper-V相关脚本,可监控Hyper-V平台及其承载的虚拟机运行状态等;用Powershell的Get-WinEvent命令可获取Windows事件跟踪日志;用Linux Shell编写Tomcat或Weblogic相关的脚本,能实现其运行状态的监控。
(4)监控平台服务器
监控平台服务器负责读取动力环境监控系统数据库并写入到ElasticSearch 索引中;负责SMonCgi请求处理,并把获取的信息写入到ElasticSearch 索引中;负责请求ElasticSearch 搜索;完成用户及设备等信息(存储在Mysql数据库中)的管理;负责监控数据或日志的展示请求。
(5)多层面监控开放平台架构图
综上所述,多层面监控开放平台架构图2所示。
五、多层面监控平台实践
笔者所在单位数据中心的基础设施完备,并配备动力环境监控系统。数据中心有若干台HP、DELL、IBM等品牌服务器,多套EMC存储设备,及若干网络设备。服务器支持Hyper-V虚拟化、多种数据库系统、多种Web服务等。
1.ELK平台搭建
结合实际情况和监控需求,搭建了两个节点的ElasticSearch 集群,并安装中文分词插件。在另外一个节点上配置Logstash和Kibana。在Logstash的配置文件中,配置SNMP Trap、beats、Syslog等,收集数据中心IT设备和软件系统的告警信息和日志。 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.
(编辑:王晓明)
转载注明来源:https://www.xzbu.com/9/view-15193079.htm