技术领域
[0001] 本发明涉及分布式系统技术领域,特别是涉及一种服务器监控方法。
相关背景技术
[0002] 分布式系统中的服务器集群,通常都有一定规模,从数台、数十台到成百上千台。这些服务器的部署可以是同一机房中跨网段的,也可以是同一地区跨IDC(互联网数据中心)机房的,还可以是跨地域跨IDC机房的,对于这种复杂网络环境下的分布式系统,如何对这些分布式的服务器进行及时高效的在线状态、运行状态和运行任务状态的监控是当前存在的难题之一。
[0003] 对于分布式系统来说,它的服务器部署通常是跨网段、跨IDC机房、跨地域的,这带来了巨大的网络环境的差异、网络复杂性和网络不稳定性。对于要进行高密度计算、存储和I/O的分布式系统来说,如果高效地监控服务器的在线状态和运行状态(如CPU使用率、内存使用率、网络实时带宽、关键的存储空间占用量等)是必须的。
[0004] 在分布式系统中,在运行的任务量可以很多,任务的类型也很多样化,对于这些任务的实时运行状态(如CPU使用率、内存使用率、网络使用情况、运行日志等)的监控也是必须的。
[0005] 目前分布式系统监控中,Zabbix是应用得比较多的一个,它是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。
[0006] Zabbix功能:具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。
[0007] Zabbix对大型的跨IDC机房、跨地域的分布式系统的监控有如下缺点:
[0008] 1、对于大型分布式系统,特别是跨IDC机房和跨地域的分布式系统来说,Zabbix对这种复杂网络的适用性不好,监控能力弱,对服务器异常响应不及时,不能及时发现服务器的网络异常和运行异常。
[0009] 2、Zabbix只有单server端来收集和处理数据,当它的性能出现瓶颈时,会导致整个Zabbix系统添加主机不正常,代理端的数据无法正常收集或是Zabbix服务端的服务器性能严重下降,错误报告CPU占用过高或I/O占用过高等问题
[0010] 3、Zabbix不支持对分布系统中运行任务进行定制化的状态监控
[0011] 综上,Zabbix的缺点主要有三点:对复杂网络的适应性不好,单server端是整个监控系统的瓶颈,不支持定制化的任务运行状态监控。
具体实施方式
[0037] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 如图1所示,本实施例提供一种服务器监控方法,其包括与待监控服务器一一对应的节点监控模块、至少一服务器连接控制模块、一数据处理模块、一显示模块和一数据库,每一节点监控模块设置于对应的待监控服务器中,每一服务器连接控制模块通信连接至少一个节点监控模块,包括以下步骤:
[0039] 步骤101、每一服务器连接控制模块通过对应的节点监控模块与对应的待监控服务器建立长连接;
[0040] 步骤102、每一节点监控模块监控对应的待监控服务器的服务器运行状态数据和任务状态数据,并将该服务器运行状态数据、任务状态数据以及该待监控服务器的识别信息上报给对应的服务器连接控制模块,其中,每一待监控服务器均具备一唯一的识别信息;
[0041] 步骤103、每一服务器连接控制模块将接收的该服务器运行状态数据、任务状态数据及对应的识别信息上报给该数据处理模块;
[0042] 步骤104、每一服务器连接控制模块不断发送和接收该节点监控模块反馈的心跳数据或服务器运行状态数据和任务状态数据,并将该待监控服务器的在线状态数据上报给该数据处理模块;
[0043] 步骤105、该数据处理模块处理每一服务器连接控制模块上报的服务器运行状态数据、任务状态数据、在线状态数据及对应的识别信息,并分析出每一待监控服务器的服务器运行状态、任务状态以及在线状态;
[0044] 步骤106、该显示模块显示每一待监控服务器的服务器运行状态、任务状态以及在线状态;
[0045] 步骤107、该数据库存储每一待监控服务器的服务器运行状态、任务状态以及在线状态。
[0046] 如图2所示,以下为本实施例一个完整的新增一个待监控服务器的流程:
[0047] 1、假设有一台新的被监控节点(待监控服务器),为该待监控服务器安装监控Agent程序和对应的配置文档,并启动该待监控服务器;
[0048] 2、监控Agent程序将读取和该待监控服务器对应配置文档,并依据配置文档中的URL地址,访问中央管理模块;
[0049] 3、当中央管理模块收到有新的监控Agent程序的请求时,就调用一致性哈希算法为该待监控服务器分配一个对应的服务器连接控制模块,并将这些数据写入到数据库的Host表中;
[0050] 4、分配的服务器连接控制模块收到中央管理模块的指令后,创建一个和新的监控Agent程序下的节点监控模块的长连接;
[0051] 5、节点监控模块和服务器连接控制模块建立长连接后,将通过建立的长连接发送心跳数据和服务器运行数据到服务器连接控制模块;
[0052] 6、服务器连接控制模块收到数据后会调用数据处理模块,对这些数据进行处理,并记录在数据库的Node表中;
[0053] 7、当服务器掉线(如宕机,网络断开)时,长连接会断开,或者心跳数据包异常时(无数据包发送、数据包间隔时间增加)服务器连接控制模块能实时收到,从而判断服务器是否在线和连接的网络质量;
[0054] 8、数据处理模块根据待监控服务器的在线状态数据和运行状态数据,可以判断出待监控服务器的在线状态和运行状态。
[0055] 重复以上步骤,即可添加多个待监控服务器。
[0056] 以下为本实施例一个完整的为被监控服务器添加/删除一个运行任务的流程:
[0057] 1、在Web管理程序的HTML界面上设置要增加/删除指定被监控服务器上的运行任务;
[0058] 2、Web管理程序将会把需增加或删除某一待监控服务器上的运行任务的指令发送给中央管理模块;
[0059] 3、中央管理模块会查找数据库,查询到所有该运行任务所对应的服务器连接控制模块,并将该指令解析后通过长连接发给运行这个运行任务的被监控服务器的节点监控模块;
[0060] 4、节点监控模块收到指令后将启动/停止对任务的监控,并上报数据;
[0061] 5、数据经长连接发送到数据处理模块后,会记录在数据库的NodeTask[0062] 表中。
[0063] 重复以上步骤,即为被监控服务器添加/删除多个运行任务。
[0064] 虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。