本申请涉及计算机技术领域,具体涉及一种用于主机性能监控的方法。本申请同时涉及一种用于主机性能监控的装置,以及一种主机性能监控系统。
背景技术:
随着信息化发展,机器集群部署及分布式应用越来越多,规模越来越大,这带来的虚拟机节点和物理机节点的迅速扩充,给机器操作系统运维工作带来了极大的挑战,维护的成本也会相应增加。如果部署在集群上的应用系统发生故障,例如出现访问缓慢、无法打开链接等,除了检查应用程序的问题,还应排查应用部署所在的主机是否有问题。如果使用传统运维方法,则出现异常情况时,需要依次登录各服务器查看状态,并且只能查看服务器当前的状态(内存、cpu、磁盘、网络、进程等),无法获知过去发生了什么,当集群中服务器数量十分庞大时,以上排查方法十分繁琐,需要大量的人力和时间,并且无法重现服务器性能指标的历史记录。因此集中监控以及追溯服务器各性能指标的历史情况非常必要。
目前有多种集群监控工具,例如,开源的免费网络监视工具nagios,能有效监控windows、linux和unix的主机状态,交换机路由器等网络设备,打印机等,一般部署在中心服务器上,从一个或多个分布式服务器收集服务检测结果。所谓中心服务器和分布服务器,是指划分出一组主机,在每个组里有一个服务器运行nagios承担全部监控逻辑的整体输出工作,例如送出通知、运行事件处理脚本、判定主机状态、安装并提供web接口等,完成对该组服务器的监控及报警工作,则该运行nagios负责监控的服务器为中心服务器,其他被监控服务器为分布服务器。该方案工作方式主要是利用nsca外部构件完成从远程主机提交强制检测结果,即通过客户端程序(send_nsca)运行于远程主机上并负责将强制检测结果送到指定的服务器上去,并通过nsca守护进程(nsca)将从客户端收到服务检测结果提交给在中心服务器的nagios,具体为在外部命令文件里插入一条process_svc_check_result命令,其后跟上检测结果;在nagios下一次处理外部命令时会找到该由分布式服务器送来的强制检测信息并处理,但是该处理方式仅是将这些监控数据作为报警的基础,没有进行有效的保存及处理,因此导致使用该集群监控方案替代传统运维是无法对服务器各指标监控追溯详细历史,不能明确产生异常的前后系统的运行信息。
技术实现要素:
本申请提供一种用于主机性能监控的方法,以解决在使用集群监控替代传统运维时不能追溯服务器性能指标的详细历史的问题。
本申请另外提供一种用于主机性能监控的装置。
本申请还提供一种主机性能监控系统。
本申请提供一种用于主机性能监控的方法,包括:
根据预设的日志规范采集服务器上的性能日志,并将所述性能日志输出到指定目录;
从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器,进行数据清洗,将经过清洗的性能日志存储到数据库;
从数据库读取性能日志进行分析统计,对分析结果进行可视化展现。
可选的,所述的采集服务器上的性能日志,包括根据设定的采集周期自主检测并采集分布服务器和/或中心服务器的至少下述资源使用信息:内存、cpu、磁盘、网络。
可选的,所述的从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器,包括:通过日志采集客户端根据设置的检查日志更新时间间隔从所述指定目录读取性能日志,将所述性能日志主动推送到消息队列集群。
可选的,所述的根据设置的检查日志更新时间间隔从所述指定目录读取性能日志,包括:在性能日志有更新时,立刻读取日志更新部分。
可选的,所述的消息队列为kafka。
可选的,所述的日志采集客户端,为logstash客户端。
可选的,所述的进行数据清洗,是通过logstash服务端主动从日志消息队列取出日志数据,将无序的性能日志数据转换为可分析的格式,并清除冗余信息。
可选的,所述的进行数据清洗,至少包括对下述任一日志清洗:内存日志、cpu日志、磁盘日志、网络状态日志、进程状态日志。
可选的,所述的进行分析统计,还包括:根据性能日志信息给出处理建议。
可选的,所述的将经过清洗的性能日志存储到数据库,是将经过清洗的日志数据传输到elasticsearch集群进行存储。
可选的,所述的从数据库读取性能日志进行分析统计,对分析结果进行可视化展现,是使用kibana对elasticsearch集群中存储的性能日志进行实时分析和可视化展现。
可选的,所述的将经过清洗的性能日志存储到数据库,包括:按照设定时长保存性能指标的历史数据。
本申请还提供一种用于主机性能监控的装置,包括:
性能日志采集单元,用于根据预设的日志规范采集节点服务器上的性能日志,并将所述性能日志输出到指定目录;
数据清洗单元,用于从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器节点,进行数据清洗,将经过清洗的性能日志存储到数据库;
日志可视化分析单元,用于从数据库读取性能日志生成分析统计表,进行可视化展现。
本申请还提供一种主机性能监控系统,包括:性能日志采集模块、数据清洗模块、日志存储模块和可视化展示模块;其中,
性能日志采集模块,用于根据预设的日志规范采集服务器上的性能日志,将所述性能日志输出到指定目录,从所述指定目录实时取出所述性能日志推送到消息队列集群;
数据清洗模块,用于从所述消息队列集群读取性能日志,进行数据清洗,包括:将无序的性能日志数据转换为可分析的格式,并清除冗余信息;
日志存储模块,用于将经过清洗的性能日志存储到数据库;
可视化展示模块,用于从数据库读取性能日志进行分析统计,对分析结果进行可视化展现。
可选的,所述性能日志采集模块,包括日志规范定义子模块,用于设定采集周期、监控对象、以及检查日志更新的时间间隔;其中,所述监控对象至少包括服务器的下述资源使用信息:内存、cpu、磁盘、网络。
可选的,所述的消息队列集群为部署kafka的集群。
可选的,所述从所述指定目录实时取出所述性能日志推送到消息队列集群,包括:在性能日志有更新时,立刻读取日志更新部分并进行主动推送。
可选的,所述数据清洗模块,还包括使用logstash服务端主动对内存日志、cpu日志、磁盘日志、网络状态日志、进程状态日志进行数据清洗。
可选的,所述日志存储模块,是采用elasticsearch集群按照设定时长存储性能日志历史数据。
可选的,所述可视化展示模块,是使用kibana对elasticsearch集群中存储的性能日志进行实时分析和可视化展现。
可选的,所述可视化展示模块,还包括专家子系统,用于根据性能日志信息给出处理建议。
与现有技术相比,本申请具有以下优点:
本申请提供的用于主机性能监控的方法、装置,通过根据预设的日志规范采集服务器上的性能日志,并将所述性能日志输出到指定目录;从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器,进行数据清洗,将经过清洗的性能日志存储到数据库;从数据库读取性能日志进行分析统计,对分析结果进行可视化展现,实现了统一采集多服务器记录的操作系统性能历史日志,并通过分布式的消息队列将日志传输至一个分布式文档数据库进行统一存储,同时将存储的操作系统性能日志进行分析和可视化展现,在定位操作系统性能问题过程中通过可视化工具实现快速实时分析,并再现操作系统性能指标的历史,无需依次登录各服务器查看,从而解决了在使用集群监控替代传统运维时不能追溯服务器性能指标的详细历史的问题。
附图说明
图1是本申请实施例提供的用于主机性能监控的方法的处理流程图;
图2是本申请实施例提供的用于主机性能监控的方法的数据流向示意图;
图3是本申请实施例提供的用于主机性能监控的装置示意图;
图4是本申请实施例提供的一种主机性能监控系统示意图;
图5是本申请实施例提供的所述主机性能监控系统的架构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种用于主机性能监控的方法。本申请同时涉及一种用于主机性能监控的装置以及一种主机性能监控系统。在下面的实施例中逐一进行详细说明。
本申请其一实施例提供一种用于主机性能监控的方法。
以下结合图1至图2对本申请提供的一种用于主机性能监控的方法的实施例进行说明。其中图1是本申请实施例提供的用于主机性能监控的方法的处理流程图;图2是本申请实施例提供的用于主机性能监控的方法的数据流向示意图。
当部署在集群上的应用出现故障时,除了检查应用程序的问题,还应排查应用部署所在的服务器是否有问题,从操作系统级别定位当前发生的问题,提高运维效率,现有的集群监控一般采用nagios,实际应用中在中心服务器部署nagios,主、备两台形成冗余,分布服务器利用nsca外部构建完成从远程主机提交强制检测结果,主备配置几乎一样,同时运行,会带来两个问题,导致资源浪费:(1)在网络上检测到的所有问题将触发通知的事件两次;(2)将被检查两次。这在繁忙的网络下会有问题的。另外,nagios由于不对数据进行有效保存,因此无法明确产生异常的前后系统发生了什么,无法保证高可用性;当nagios的master服务器故障时,slave会承担起发送告警的任务,但监控结果的展示等功能无法使用,不能保证整个监控程序继续正常工作。
本申请实施例提供的用于主机性能监控的方法,实现了统一采集多服务器记录的操作系统性能历史日志,并通过分布式的消息队列将日志传输至一个分布式文档数据库进行统一存储,同时将存储的操作系统性能日志进行分析和可视化展现。当需要定位操作系统性能问题时,通过可视化工具快速实时分析,再现操作系统性能指标的历史,无需依次登录各服务器查看。下述以包含日志采集脚本、消息队列集群、logstash、elasticsearch集群以及kibana的性能监控解决方案说明所述用于主机性能监控的方法。
图1所示用于主机性能监控的方法,包括:
步骤s101,根据预设的日志规范采集服务器上的性能日志,并将所述性能日志输出到指定目录
本步骤的目的是,获取集群中各台主机上的系统性能信息保存到指定目录。
所述日志采集脚本,是包含获取系统性能信息的命令的可执行文件。
所述消息队列,是分布式系统中解决应用耦合、进行异步消息处理的组件;
所述logstash,包括客户端和服务端,客户端异步部署在被采集日志的应用服务器,从指定目录获取日志并进行简单处理后如多行合并,向消息队列推送日志数据;服务端部署多台机器上,形成一个集群,从消息队列中消费数据,并进行数据清洗,形成格式化数据。
所述elasticsearch,用于存储信息并提供强大的信息搜索功能。
所述kibana,是开源分析与可视化平台,和elasticsearch一起使用,用kibana通过简单、基于浏览器的接口可以搜索、查看、交互存放在elasticsearch索引里的数据,包括文档数据,使用各种不同的图表、表格、地图等展示高级数据分析与可视化。
所述的采集服务器上的性能日志,包括根据设定的采集周期自主检测并采集分布服务器和/或中心服务器的至少下述资源使用信息:内存、cpu、磁盘、网络。
具体到本申请实施例,应用服务器操作系统为linux操作系统,建立操作系统性能日志记录规范,包括确定日志存储周期、存放目录、所需获取的日志种类,例如,每5分钟获取cpu、内存、磁盘、网络等各资源占用信息,保证集群中各应用服务器操作系统性能日志按照既定的规则获取和存放,以便后续进行统一的提取、传输、分析和展示。
另外,本申请实施例中,按照既定的规范,通过编写的linux操作系统shell脚本,实现将每台主机的性能日志输出到该主机上的指定目录。
所述步骤s102,从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器,进行数据清洗,将经过清洗的性能日志存储到数据库。
本步骤的目的是,将性能日志传递到数据清洗服务器进行数据清洗,清洗后的数据存储到数据库。
所述数据清洗,是将从消息队列集群获取到的原始的日志数据,经过一系列处理转换为可分析的格式,例如,统一规格、修正逻辑、转换构造、删除重复项。具体的,所述的进行数据清洗,是通过logstash服务端主动从日志消息队列取出日志数据,将无序的性能日志数据转换为可分析的格式,并清除冗余信息;至少包括对下述任一日志清洗:内存日志、cpu日志、磁盘日志、网络状态日志、进程状态日志。
本申请实施例中,所述消息队列为kafkamq。所谓kafka,是一种高吞吐量分布式发布订阅消息系统,可以支持每秒数百万的消息,并能提供消息持久化,即保持长时间的消息存储。
从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器,包括:通过日志采集客户端根据设置的检查日志更新时间间隔从所述指定目录读取性能日志,将所述性能日志主动推送到消息队列集群。其中,所述的根据设置的检查日志更新时间间隔从所述指定目录读取性能日志,包括:在性能日志有更新时,立刻读取日志更新部分。例如,本申请实施例中,应用服务器部署一个shell脚本用于输出主机操作系统性能日志,shell脚本将获取到主机的性能日志,写到指定目录下;应用服务器还部署日志采集客户端,例如logstash客户端,,该目录的相应的日志文件写入新的日志信息时,则logstash客户端感知到文件更新,并将更新部分通过kafka推送到logstash服务端进行数据清洗;经过清洗后的格式化性能数据存储到elasticsearch集群,进行分布式存储,留存性能指标的详细历史记录以备查询和分析。
所述步骤s103,从数据库读取性能日志进行分析统计,对分析结果进行可视化展现。
本步骤的目的是,实现性能日志的分析和可视化展现。
具体到本申请实施例,所述的将经过清洗的性能日志存储到数据库,是将经过清洗的日志数据传输到elasticsearch集群进行存储,并使用kibana对elasticsearch集群中存储的性能日志进行实时分析和可视化展现,其具体的数据流向示意图参见图2。另外,所述的将经过清洗的性能日志存储到数据库,包括:按照设定时长保存性能指标的历史数据,例如,保存3个月的性能日志文件。
另外,所述的进行分析统计,还包括:根据性能日志信息给出处理建议。例如:部署在集群上的应用系统出现访问缓慢、无法打开链接等异常情况,分析应用部署所在的主机性能日志是否有问题,包括内存、cpu、磁盘、网络等资源是否充足,是否有内存泄露导致的内存占满等;对于单纯的资源不足,则给出增加资源的建议;对于内存泄露或资源使用不合理,则给出建议修改应用程序以避免应用运行异常。
与本申请提供的一种用于主机性能监控的方法的实施例相对应,本申请还提供了一种用于主机性能监控的装置。
参照图3,其示出了根据本申请提供的一种用于主机性能监控的装置示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本申请提供一种用于主机性能监控的装置,包括:日志采集单元301、日志存储单元302、日志可视化分析单元303;其中,
所述日志采集单元301,用于根据预设的日志规范采集服务器上的性能日志,并将所述性能日志输出到指定目录;
所述日志存储单元302,用于从所述指定目录实时取出所述性能日志通过消息队列集群传递到数据清洗服务器,进行数据清洗,将经过清洗的性能日志存储到数据库;
所述日志可视化分析单元303,用于从数据库读取性能日志进行分析统计,对分析结果进行可视化展现。
可选的,所述所述日志采集单元301具体用于:根据设定的采集周期自主检测并采集分布服务器和/或中心服务器的至少下述资源使用信息:内存、cpu、磁盘、网络。
可选的,所述日志存储单元302具体用于:通过日志采集客户端根据设置的检查日志更新时间间隔从所述指定目录读取性能日志,将所述性能日志主动推送到消息队列集群。
可选的,所述日志存储单元302包括实时读取子单元,所述实时读取子单元用于在性能日志有更新时,立刻读取日志更新部分。
可选的,所述的消息队列为kafka。
可选的,所述的日志采集客户端,为logstash客户端。
可选的,所述日志存储单元302具体用于:通过logstash服务端主动从日志消息队列取出日志数据,将无序的性能日志数据转换为可分析的格式,并清除冗余信息。
可选的,所述的进行数据清洗,至少包括对下述任一日志清洗:内存日志、cpu日志、磁盘日志、网络状态日志、进程状态日志。
可选的,所述日志可视化分析单元303包括处理建议子单元,所述处理建议子单元用于根据性能日志信息给出处理建议。
可选的,所述日志存储单元302具体用于:将经过清洗的日志数据传输到elasticsearch集群进行存储。
可信的,所述日志可视化分析单元303具体用于:使用kibana对elasticsearch集群中存储的性能日志进行实时分析和可视化展现。
可选的,所述日志存储单元302具体用于:按照设定时长保存性能指标的历史数据。
以本申请提供的一种用于主机性能监控的方法的实施例为基础,本申请还提供了一种主机性能监控系统。
以下结合图4至图5对本申请提供的一种主机性能监控系统进行说明,其中,图4是根据本申请提供的一种主机性能监控系统的实施例的示意图,图5是本申请实施例提供的所述主机性能监控系统的架构示意图。由于该实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见方法实施例的对应说明即可。下述描述的系统实施例仅仅是示意性的。
本申请提供一种主机性能监控系统,包括:性能日志采集模块401、数据清洗模块402、日志存储模块403和可视化展示模块404。
所述性能日志采集模块401,用于根据预设的日志规范采集服务器上的性能日志,将所述性能日志输出到指定目录,从所述指定目录实时取出所述性能日志推送到消息队列集群。
本模块的作用,是获取要监控的主机上的性能日志,并推送到消息队列集群。
本申请实施例中,所述性能日志采集模块,包括日志规范定义子模块,用于设定采集周期、监控对象、以及检查日志更新的时间间隔;其中,所述监控对象至少包括服务器的下述资源使用信息:内存、cpu、磁盘、网络。另外,所述从所述指定目录实时取出所述性能日志推送到消息队列集群,包括:在性能日志有更新时,立刻读取日志更新部分并进行主动推送。
例如,在主机上运行shell脚本进行性能日志采集,每5分钟采集一次,采集到的信息保存到文件中存储在主机的指定目录下;主机上同时运行logstash客户端,每分钟检查存日志文件的指定目录下文件的更新,发现有更新即作为消息队列的生产者将更新数据推送到消息队列集群,其中,所述的消息队列集群为部署kafka的集群。
所述数据清洗模块402,用于从所述消息队列集群读取性能日志,进行数据清洗,包括:将无序的性能日志数据转换为可分析的格式,并清除冗余信息。
本模块的作用是,对日志数据进行清洗获取可分析格式的日志信息。
本申请实施例中,所述数据清洗模块,还包括使用logstash服务端主动对内存日志、cpu日志、磁盘日志、网络状态日志、进程状态日志进行数据清洗,实际应用中,将logstash服务端部署在数据清洗服务器上,作为消息队列集群的消息消费者,主动从kafka消息队列集群中读取消息,并解析出所封装的日志数据,这些日志数据可能是无序的,清洗过程中将其组装成可分析格式。
所述日志存储模块403,用于将经过清洗的性能日志存储到数据库。
本模块的作用上,存储清洗后的性能日志数据。
本申请实施例中,所述日志存储模块,采用elasticsearch集群按照设定时长存储性能日志历史数据。例如,存储3个月的性能数据。
所述可视化展示模块404,用于从数据库读取性能日志进行分析统计,对分析结果进行可视化展现。
本模块的作用,是可视化方式展示对性能日志进行的数据统计与分析结果。
本申请实施例中,所述可视化展示模块,使用kibana对elasticsearch集群中存储的性能日志进行实时分析和可视化展现。其中,所述可视化展示模块,还包括专家子系统,用于根据性能日志信息给出处理建议。例如,展示一个月内主机的内存使用率变化曲线。
具体的,本申请实施例提供的主机性能监控系统的架构示意图参见图5,其日志采集客户端,为logstash客户端,部署在应用服务器上,同时应用服务器应部署一个shell脚本用于输出主机操作系统性能日志,logstash客户端将所述性能日志传递到消息队列集群,数据清洗服务端的logstash主动消费消息队列集群中的日志数据,并传输至elasticsearch集群进行存储;其中,shell脚本获取到主机的性能日志,写到指定目录下,该目录的相应的日志文件写入新的日志信息,则logstash客户端感知到文件更新,将更新部分通过kafka推送到logstash服务端进行数据清洗,经过清洗后的格式化数据存储到elasticsearch集群,留存性能指标的详细历史记录通过kibana进行备查询和分析。
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。