
基于ELK的高校数据中心运维多层面监控平台研究与实践.docx
9页基于ELK的高校数据中心运维多层面监控平台研究与实践 摘要:为了及时发现隐患和故障,提高高校数据中心的运维效率,需要对数据中心软硬件系统的性能、状态、日志等进行监控文章以ELK为数据采集和存取平台,并借助Shell脚本强大的系统管理功能,设计了监控代理,实现了在监控平台中对多数据源的处理经过实践,文章设计的监控平台,能实现高校数据中心的多层面监控,为数据中心高效管理提供支撑关键词:数据中心,ELK,运维监控,监控代理一、引言由于受到运行环境、设备生命周期、系统变更、系统漏洞、系统性能、网络功击,以及人为误操作等影响,数据中心的基础设施和软硬件系统,在运行过程中经常出现隐患和故障通过多层面监控,能及时发现这些隐患和故障,提高运维效率,为数据中心的安全、稳定、可持续运行提供保障因此,数据中心多层面监控意义重大系统性能和运行状态能反映出设备运行的稳定性和可持续性系统日志记录了系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件运维人员可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹[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设备和软件系统的告警信息和日志。












