本发明涉及计算机
技术领域:
:,特别涉及一种计算机iohung事件的预警方法、装置、设备和介质。
背景技术:
::在当今it科技风起云涌的时代,云计算的大势犹如奔腾咆哮的长江滚滚而来,势不可挡。当前企业各个业务对于it的需求日益强烈,数据中心不断地集约整合,it管理者越来越感受到了新型数据中心所带来的运维挑战,特别是日常运维中要面临众多故障。绝大部分故障靠常规的监控系统即可发现,但有一些故障,如iohung导致计算机“失联”事件,却难以及时捕获。iohung是一类极其诡异的故障,是计算机系统监控的一大难题,传统监控(如bmc)根本无能为力。如果说故障处理是系统运维的皇冠,那么iohung事件的预警则是皇冠上的一颗璀璨的明珠。iohung即计算机io挂起事件,可由诸多复杂因素引起,硬件(硬盘、raid卡等)或软件(操作系统、数据库等)的bug均能触发,属于数据中心服务器的一种极端故障。发生这种故障时,该机操作系统层面事实上已停止工作,基本无法登录,但网络层面通过ping该机却是连通的,让传统监控系统产生错觉,还误认为该机是正常的,以致事态扩大,甚至酿成生产事故。2019年3月3日国内某it巨头的华北云计算数据中心的服务器突发iohung事件,由于一时难以定位故障,影响客户的各类业务若干小时,造成巨大的经济损失和声誉影响。国外的“亚马逊云”近年也发生多次iohung事件,而且这种iohung事件不只发生在大型数据中心,小型数据中心也依然存在,比如我们作为某国有银行的一级分行数据中心有230台pc服务器,每年均会发生3~5起iohung故障,发生概率大约是1.7%。如果是在有上万台甚至几十万台服务器的大型数据中心,那发生该类故障的数量将不容小觑。iohung经常发生在pc服务器上,因为pc服务器的可靠性远远低于小型机。所以在十年前还是小型机唱主角的年代iohung非常罕见。但时过境迁,在云计算时代,随着物美价廉的pc服务器的大规模应用,iohung事件日益凸显,迫使我们不得不认真面对。实际上iohung这种说法也就是近几年才提出的,这是对一种新鲜事物渐进的认识过程。早期发生的计算机“假死”或“失联”,其实均可属于这一类,但那时大家研究不足,还没一个统一的称呼罢了。iohung的有效预警监控属于计算机界的一大难题。那为什么传统监控发现不了iohung故障呢?这里就以世界排名第一的计算机监控软件bmc为例来说明这个原因。bmc监控系统是由部署在客户机的代理程序(patrolagent)来自动检查本机状态,如果发现异常主动向服务端(bppmcentral)发送报警信息,服务端被动得到报警信息。这种报警方式有个必须的前提条件,要求客户机“能”将报警信息发送到服务端,即patrolagent要能正常工作。但实际上在发生iohung时计算机往往已丧失发送能力,导致bmc监控系统无法获知iohung故障。如果把传统监控打个比方,可以通过“看病”做个形象比喻:在传统监控体系中,病人(客户端)找医生(服务端)看病,病人要主动将自己得了什么病告诉医生,医生是被动知道的,一旦病人发生很严重的病连话都说不出来时,医生就完全不能知晓病人是什么情况,认为其是正常的。传统的bmc监控有一些不足:一是软件庞大,有若干光盘;二是部署复杂,不但服务端要安装控制台、配置管理、知识库模块、转发服务等,而且客户端要安装680m的软件;三是操作复杂,菜单繁多,不易上手;四是可靠性差,服务端经常出现各种客户端变虚的告警,多是因为客户端patrol用户密码过期所致,此时需在服务端重新配置patrol新密码才可继续监控,而这断档期间就存在监控空白;五是bmc客户端程序消耗系统资源较多,甚至影响客户端其它应用程序的运行;六是bmc软件版权严格,价格不菲。技术实现要素:本发明要解决的技术问题,在于提供一种计算机iohung事件的预警方法、装置、设备和介质,解决了传统监控的不足。第一方面,本发明提供了一种计算机iohung事件的预警方法,包括:步骤1、在各个虚拟机上部署采集机;步骤2、采集机定时采集虚拟机上的数据,写入至监控报文文件;步骤3、若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间;步骤4、预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警。进一步地,还包括步骤5、预警机匹配所述虚拟机对应的物理主机,并将预警信息以及状态信息报文存储至数据库。进一步地,所述状态信息报文还包括cpu使用空闲率以及io等待时间。第二方面,本发明提供了一种计算机iohung事件的预警装置,包括:部署模块,在各个虚拟机上部署采集机;采集模块,采集机定时采集虚拟机上的数据,写入至监控报文文件;发送模块,若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间;预警模块,预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警。进一步地,还包括匹配模块,预警机匹配所述虚拟机对应的物理主机,并将预警信息以及状态信息报文存储至数据库。进一步地,所述状态信息报文还包括cpu使用空闲率以及io等待时间。第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:本申请实施例提供的方法、装置、设备和介质,作为传统监控的有效补充,解决了传统监控所不能发现的“iohung”事件这一盲区。我们采用该预警模式后,成效显著,每年及时预警多起iohung故障,避免了生产事故发生。如2019年一台浪潮服务器内存问题导致iohung;2020年上半年反洗钱iq库所在机器raid卡异常导致iohung;2020年上半年海报屏机器硬盘异常导致iohung。发生iohung事件时,系统均表现为“假死”,看上去似乎正常,实际上已无法工作,计算机处于“失联”状态,而我们部署的各种传统监控均失灵。幸好在这种新预警模式的帮助下,才又快又准地定位故障,及时排除问题,为生产运行的安全稳定提供坚实保障。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明下面参照附图结合实施例对本发明作进一步的说明。图1为本发明的告警示意图;图2为本发明的框架示意图;图3为本发明的流程示意图;图4为本发明实施例一中方法中的流程图;图5为本发明实施例二中装置的结构示意图。具体实施方式本申请实施例通过提供一种计算机iohung事件的预警方法、装置、设备和介质,解决了现有技术中预警不及时的情况,其具有系统构思精巧、架构简单、可靠性强、部署方便、扩展性好的特点,而且采用udp通讯后系统资源开销小,对客户端的性能影响可几乎忽略不计的优点;本发明不但对各类计算机已知的和未知的iohung问题有效,同时适用于部分传统故障(如异常宕机),而且还有助于发现诸如定时任务失效、用户密码过期、时钟偏差等操作系统级问题。此外,通过实时采集到的报文数据,可生成客户机的性能报表,用于定期分析。本申请实施例中的技术方案,总体思路如下:针对传统计算机监控无法及时发现iohung事件的缺陷,本发明采用逆向分析方式,设计了一种全新的预警模式--由传统的客户机报警转变为服务端主动识别,而且不必依赖故障库就能识别出故障。如图1所示,从主控端(服务端)来看,客户机状态简化为只有“正常”和“失联”两种,而“失联”就是可能发生故障的状态。客户机报警由传统的事件驱动模式,改为定时向服务端发送状态信息,包括本机时间、cpu、io等简单信息,从而在服务端及时掌握客户机的“运行轨迹”。服务端对收到的客户信息作出判断,一旦在规定的时间内(超时)未收到客户机的状态信息,运行轨迹中断,将认为客户机“失联”,而发出预警信息通知有关人员及时处理。一、系统架构如图2所示,预警模式采用客户/服务(c/s)架构,整个系统可分三层:1、采集层:由部署在各虚拟机上的“采集机”组成。定时将本机时间、cpu使用空闲率、io等待这三个指标写到监控报文文件。如果写盘成功,基本可以确认本机目前工作状态是良好的(这个判断非常重要),再向服务端发送状态信息报文,以示平安。监控报文文件名格式为:主机名@ip地址。2、预警层:由各个预警机组成。预警机定期检查服务端接收目录所有报文,从报文的最后一条记录中读取出客户机的最后采集数据发送时间,与本机标准时间进行比较,一旦相差达到设定的偏差值(通过调整该值,可设定报警灵敏度),系统将通过各渠道报警(包括记录到数据库、网页展现、发短信等)。预警机能从vc库中匹配到该虚拟机所对应的物理主机(如vmware的esxi主机),为故障快速定位提供保障。预警记录记载在预警数据库中。每个预警机所管理的采集数量建议小于5000台,如果超过上限,可增加部署预警机。以此类推,无限扩展。3、数据层:包含两个数据库,一个是用作虚拟机管理的virtualcentre(vc)数据库,安装虚拟机时均要求配置此系统级数据库;另一个是保存采集信息和预警信息的预警库,供事后分析用。二、系统部署本预警系统部署简单,下面逐层介绍:1、数据层:vc库用现成的,只需新建一个预警数据库(也可利用现有资源)。在库中新建两张表:--报警日志createtablet_msglog(--各采集机运行数据记录预警层(服务端):新建一suselinux11虚拟机,部署如下程序:其中analyst.sh程序的核心部分如下:udp_receiver.py程序核心代码部分如下:注意analyst.sh、udp_receiver.sh这两个主程序需配置在crontab定时任务中自动执行。可每10分钟执行一次。采集层(客户端):在linux等客户端部署程序如下:其中udp_sender.py程序部分重要编码如下:sys.setdefaultencoding(‘gb18030’)s=socket.socket(socket.af_inet,socket.sock_dgram)s.sendto(base64.encodestring(sys.argv[1].encode()),#s.sendto(sys.argv[1].encode(),(“”,5000))s.close()可将主程序recorder.sh.udp定义在操作系统的定时任务中每5分钟执行一次。工作流程如图3所示,每台客户机(采集层)上部署“采集机”,定时将状态信息发送到服务端。服务端(预警层)定时检查是否及时收到各“采集机”数据,对超时未收到客户端信息而运行轨迹中断的计算机,经过匹配数据库中该机的详细信息后,将预警消息发送给有关人员。同时,数据库中还将记录采集信息和报警信息。实施例一如图4所示,本实施例提供一种计算机iohung事件的预警方法,包括:步骤1、在各个虚拟机上部署采集机;步骤2、采集机定时采集虚拟机上的数据,写入至监控报文文件;步骤3、若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间,所述状态信息报文还包括cpu使用空闲率以及io等待时间;用于iohung事件发生后的分析;步骤4、预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警;步骤5、预警机匹配所述虚拟机对应的物理主机,并将预警信息以及状态信息报文存储至数据库。基于同一发明构思,本申请还提供了与实施例一中的方法对应的装置,详见实施例二。实施例二如图5所示,在本实施例中提供了一种计算机iohung事件的预警装置,包括:部署模块,在各个虚拟机上部署采集机;采集模块,采集机定时采集虚拟机上的数据,写入至监控报文文件;发送模块,若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间,所述状态信息报文还包括cpu使用空闲率以及io等待时间;用于iohung事件发生后的分析;预警模块,预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警。匹配模块,预警机匹配所述虚拟机对应的物理主机,并将预警信息以及状态信息报文存储至数据库。由于本发明实施例二所介绍的装置,为实施本发明实施例一的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。实施例三本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。实施例四本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。本申请实施例中提供的技术方案,至少具有如下技术效果或优点:本申请实施例提供的方法、装置、设备及介质,本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。虽然以上描述了本发明的具体实施方式,但是熟悉本
技术领域:
:的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种计算机iohung事件的预警方法,其特征在于:包括:
步骤1、在各个虚拟机上部署采集机;
步骤2、采集机定时采集虚拟机上的数据,写入至监控报文文件;
步骤3、若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间;
步骤4、预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警。
2.根据权利要求1所述的一种计算机iohung事件的预警方法,其特征在于:还包括步骤5、预警机匹配所述虚拟机对应的物理主机,并将预警信息以及状态信息报文存储至数据库。
3.根据权利要求1所述的一种计算机iohung事件的预警方法,其特征在于:所述状态信息报文还包括cpu使用空闲率以及io等待时间。
4.一种计算机iohung事件的预警装置,其特征在于:包括:
部署模块,在各个虚拟机上部署采集机;
采集模块,采集机定时采集虚拟机上的数据,写入至监控报文文件;
发送模块,若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间;
预警模块,预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警。
5.根据权利要求4所述的一种计算机iohung事件的预警装置,其特征在于:还包括匹配模块,预警机匹配所述虚拟机对应的物理主机,并将预警信息以及状态信息报文存储至数据库。
6.根据权利要求4所述的一种计算机iohung事件的预警装置,其特征在于:所述状态信息报文还包括cpu使用空闲率以及io等待时间。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至3任一项所述的方法。
技术总结本发明提供一种计算机IO HUNG事件的预警方法、装置、设备和介质,方法包括:在各个虚拟机上部署采集机;采集机定时采集虚拟机上的数据,写入至监控报文文件;若是写盘成功,则发送状态信息报文;否,则不发送;所述状态信息报文包括采集时间;预警机定期检查服务端的报文;并从与当前时间最近的一条报文中读取出其中采集时间,与本机标准时间进行比较,若相差达到设定的偏差值,则进行预警;不但对各类计算机已知的和未知的IO HUNG问题有效,同时适用于部分传统故障,而且还有助于发现诸如定时任务失效、用户密码过期、时钟偏差等操作系统级问题。此外,通过实时采集到的报文数据,可生成客户机的性能报表,用于定期分析。
技术研发人员:张松坚;陈长钦;杨超;沈书航
受保护的技术使用者:中国农业银行股份有限公司福建省分行
技术研发日:2020.10.29
技术公布日:2021.03.12