一种批量监控Linux服务器运行状态的方法
【技术领域】
[0001]本发明涉及Linux服务器监控技术领域,具体涉及一种批量监控Linux服务器运行状态的方法,通过在网络中一台监控节点上部署监控脚本,定时获取网络上其它服务器的运行状态,并将结果保存到本监控节点上。当有服务器发生宕机或其它异常情况时,监控节点就会检测到错误,同时生成错误日志并保存到每台服务器对应的监控日志中,实现批量对服务器的运行状态进行实时监控的目的。
【背景技术】
[0002]随着服务器技术的不断发展,企业机房中的服务器数量变得越来越多,在满足广大企业日益增长的计算机存储需求的同时,也使得我们监控服务器运行状态的工作变得越来越繁琐。通常情况下,如果服务器配置了管理卡,出现硬件故障时可能会有告警,及时通知运维人员处理故障。但是,如果服务器直接宕机或者系统资源占用过多,此时管理卡一般不会检测到告警,但是这将直接影响到业务运行,只有运维人员发现业务无法使用或运行缓慢后才会引起注意,而且难以判断发生故障的时间。另外,对机房大量服务器逐台检查也会消耗过多的人力和时间成本。
【发明内容】
[0003]本发明要解决的技术问题是:为了解决上述问题,提供一种批量监控Linux服务器运行状态的方法。
[0004]本发明所采用的技术方案为:
一种批量监控Linux服务器运行状态的方法,所述方法通过在网络中一台监控节点上部署监控脚本,定时获取网络上其它服务器的运行状态,并将结果保存到本监控节点上;当有服务器发生宕机或其它异常情况时,监控节点就会检测到错误,同时生成错误日志并保存到每台服务器对应的监控日志中,实现批量对服务器的运行状态进行实时监控。
[0005]所述方法涉及的程序包括:1)批量扫描器scan,sh、2)状态获取及判断机制get_state.sh,其中:
1)批量扫描器scan,sh:使用Shell脚本编写,允许自定义被扫描的IP地址段范围及扫描间隔,在计划扫描的时间到来后,会批量在每台被监控服务器上调用状态获取及判断机制,并将返回值传回到监控节点上;
2)状态获取及判断机制get_state.sh:通过Linux系统管理命令获取服务器的运行状态,同时对服务器的存活状态做出判断,将结果记录到监控日志中,每台被监控服务器都有一个独立的日志文件。
[0006]所述方法实现步骤如下:
1)在监控节点上部署scan.sh和get_state.sh,复制脚本文件至任意目录,要求这两个脚本位于同一目录下;
2)创建ip.txt文件,里面填写好所有服务器的IP地址,每行一个; 3)修改扫描时间间隔,单位是秒;
4)赋予脚本文件可执行权限,执行脚本;
5)监控过程与结果分析。
[0007]所述监控过程与结果分析操作步骤如下:
1)scan.sh用于创建后台监控进程,根据扫描列表中定义的IP地址段远程连接到每台被监控的服务器上,同时将get_state脚本复制到远程服务器上获取最新状态,最后负责将数据传回监控节点;
2)get_State.sh用于获取服务器的运行状态,同时对服务器的存活状态做出判断,将结果记录到监控日志中,日志文件以主机名结尾;
日志文件详细记录了此台服务器的运行状态,包括服务器当前存活状态、已运行时间、各资源占用率以及关机或重启记录;
3)通过查看日志中的存活标记及日志记录时间,确认服务器有无发生宕机问题;
4)最后,对有问题的服务器进行维护。
[0008]本发明的有益效果为:
本发明提出的基于Shell脚本的实时监控方法,将会在监控节点上部署批量扫描器,不会占用被监控服务器的系统资源。同时将所有服务器的运行状态数据统一输送到监控节点上,十分方便运维人员主动维护。而且,当服务器状态异常后,运维人员还可以从日志中轻易确定故障发生的时间,非常实用。本方法无需安装第三方软件,简单易用。批量扫描器使用Shell脚本编写,通用性强,可跨平台使用。另外,可以自定义扫描范围及扫描间隔,适应不同的监控环境。同时支持后台监控,无需人为干预。
【附图说明】
[0009]图1为本发明方法流程图。
【具体实施方式】
[0010]下面根据说明书附图,结合【具体实施方式】对本发明进一步说明:
实施例1:
一种批量监控Linux服务器运行状态的方法,所述方法通过在网络中一台监控节点上部署监控脚本,定时获取网络上其它服务器的运行状态,并将结果保存到本监控节点上;当有服务器发生宕机或其它异常情况时,监控节点就会检测到错误,同时生成错误日志并保存到每台服务器对应的监控日志中,实现批量对服务器的运行状态进行实时监控。
[0011]实施例2:
在实施例1的基础上,本实施例所述方法涉及的程序包括:1)批量扫描器scan, sh、2)状态获取及判断机制get_state.sh,其中:
1)批量扫描器scan,sh:使用Shell脚本编写,允许自定义被扫描的IP地址段范围及扫描间隔,在计划扫描的时间到来后,会批量在每台被监控服务器上调用状态获取及判断机制,并将返回值传回到监控节点上;
2)状态获取及判断机制get_state.sh:通过Linux系统管理命令获取服务器的运行状态,同时对服务器的存活状态做出判断,将结果记录到监控日志中,每台被监控服务器都有一个独立的日志文件。
[0012]其中:scan.sh程序:
#! /bin/bash
while [ true ]do
for i in cat ip.txtdo
scp get_state.sh
[email protected]$1:/root
ssh
[email protected]$i 〃chmod 777 get_state.sh;./get_state.sh〃
scp
[email protected]$1:/root/stated Logs
done
sleep 3600done
说明1:程序调用的ip.txt文件可以自行创建,里面填写好所有服务器的IP地址,每行—个;
说明2:sleep 3600部分为扫描间隔,单位是秒,默认1小时扫描一次,可修改。
[0013]get—state.sh程序:
#! /bin/bash
echo 1-===================Server is live====================” >> state—$
H0STNAME.log
uptime >> statejH0STNAME.logfree >> statejH0STNAME.logdf -Th ? statejH0STNAME.log1stat -m >> statejH0STNAME.loglast reboot >> statejH0STNAME.log实施例3:
如图1所示,在实施例2的基础上,本实施例所述方法实现步骤如下:
1)在监控节点上部署scan.sh和get—state.sh,复制脚本文件至任意目录,比如/root目录等,但要求这两个脚本位于同一目录下;
2)创建ip.txt文件,里面填写好所有服务器的IP地址,每行一个;例如:
10.7.18.1
10.7.18.2
10.7.18.3
3)修改扫描时间间隔,单位是秒,默认1小时扫描一次; sleep 3600
4)赋予脚本文件可执行权限,执行脚本;
#chmod 777 scan.sh get_state.sh
#./scan.sh & 5)监控过程与结果分析。
[0014] 实施例4:
在实施例3的基础上,本实施例所述监控过程与结果分析操作步骤如下:
1)scan.sh用于创建后台监控进程,根据扫描列表中定义的IP地址段远程连接到每台被监控的服务器上,同时将get_state脚本复制到远程服务器上获取最新状态,
最后负责将数据传回监控节点;
2)get_State.sh用于获取服务器的运行状态,同时对服务器的存活状态做出判断,将结果记录到监控日志中,日志文件以主机名结尾;
日志文件详细记录了此台服务器的运行状态,包括服务器当前存活状态、已运行时间、各资源占用率以及关机或重启记录等:
==================Server is 1ive======================
18:37:34 up 8 days, 3:21,2 users, load average: 0.00,0.01,0.00
total used freeshared buffers cached
Mem:32839496 508244 32331252 0107168 67080
-/+ buffers/cache: 333996 32505500 Swap: 164904880 16490488
FilesystemType Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 50G 14G 34G 29% / tmpfstmpfs 16G 0 16G 0% /dev/shm
/dev/sdalext4 485M 33M 427M 8% /boot
/dev/mapper/VolGroup-lv_home ext4 210G 188M 199G 1% /home/dev/sdzxfs 3.7T 68M 3.7T 1% /mnt
Linux 2.6.32-431.el6.x86—64 (localhost.localdomain) 09/14/2015 —x86—64— (8 CPU)avg-cpu: %user %nice %system %1wait %steal %idle0.00 0.00 0.02 0.01 0.00 99.97Device:tps MB—read/s MB—wrtn/s MB—read MB_wrtn
sda0.13 0.000.0059371
sdb0.00 0.000.0000
sdc0.00 0.000.0010
sdd0.00 0.000.0000
reboot system boot 2.6.32-431.el6.x Sun Sep 6 15:16 - 18:37 (8+03:20)reboot system boot 2.6.32-431.el6.x Wed Aug 26 16:19 - 15:13 (10+22:53)reboot system boot 2.6.32-431.el6.x Wed Aug 26 16:13 - 15:13 (10+22:59)reboot system boot 2.6.32-431.el6.x Wed Aug 26 15:43 - 15:13 (10+23:29)reboot system boot 2.6.32-431.el6.x Wed Aug 26 15:19 - 15:13 (10+23:53)reboot system boot 2.6.32-431.el6.x Thu Jul 30 09:56 - 09:58 (00:02)reboot system boot 2.6.32-431.el6.x Tue Jun 23 11:25 - 09:58 (36+22:33)
3)通过查看日志中的存活标记及日志记录时间,可以确认服务器有无发生宕机问题: 当服务器状态异常时,最直接的表现即是业务宕机或者运行效率下降; 例如,日志最后一条存活标记记录于22:16:49,由于监控扫描间隔为1小时,由此可以判断问题发生于22:16:49 - 23:16:49之间1小时范围内;而系统日志一般是无法记录问题发生时间的;
如果服务器未发生宕机等严重问题,日志中的存活标记会一直记录,进而可以查看系统启动记录,确认是否发生过计划外的自动重启问题,以及查看系统资源使用状态,推断服务器是否有运行缓慢或者性能下降等隐患;
查看load average—项可以得出当前服务器的CPU压力较高,且仍有上升趋势,建议采取紧急措施限制资源消耗;另外,从内存使用明细可见内存占用率也已达到82%以上,容易造成服务器运行缓慢、性能下降等问题;
4)最后,对有问题的服务器进行维护。
[0015]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【主权项】
1.一种批量监控Linux服务器运行状态的方法,其特征在于:所述方法通过在网络中一台监控节点上部署监控脚本,定时获取网络上其它服务器的运行状态,并将结果保存到本监控节点上;当有服务器发生宕机或其它异常情况时,监控节点就会检测到错误,同时生成错误日志并保存到每台服务器对应的监控日志中,实现批量对服务器的运行状态进行实时监控。2.根据权利要求1所述的一种批量监控Linux服务器运行状态的方法,其特征在于,所述方法涉及的程序包括:1)批量扫描器scan.sh、2)状态获取及判断机制get_state.sh,其中: 1)批量扫描器scan,sh:使用Shell脚本编写,允许自定义被扫描的IP地址段范围及扫描间隔,在计划扫描的时间到来后,会批量在每台被监控服务器上调用状态获取及判断机制,并将返回值传回到监控节点上; 2)状态获取及判断机制get_state.sh:通过Linux系统管理命令获取服务器的运行状态,同时对服务器的存活状态做出判断,将结果记录到监控日志中,每台被监控服务器都有一个独立的日志文件。3.根据权利要求2所述的一种批量监控Linux服务器运行状态的方法,其特征在于,所述方法实现步骤如下: 1)在监控节点上部署scan, sh和get_state.sh,复制脚本文件至任意目录,要求这两个脚本位于同一目录下; 2)创建ip.txt文件,里面填写好所有服务器的IP地址,每行一个; 3)修改扫描时间间隔,单位是秒; 4)赋予脚本文件可执行权限,执行脚本; 5)监控过程与结果分析。4.根据权利要求3所述的一种批量监控Linux服务器运行状态的方法,其特征在于,所述监控过程与结果分析操作步骤如下: 1)scan.sh用于创建后台监控进程,根据扫描列表中定义的IP地址段远程连接到每台被监控的服务器上,同时将get_state脚本复制到远程服务器上获取最新状态,最后负责将数据传回监控节点; 2)get_State.Sh用于获取服务器的运行状态,同时对服务器的存活状态做出判断,将结果记录到监控日志中,日志文件以主机名结尾; 日志文件详细记录了此台服务器的运行状态,包括服务器当前存活状态、已运行时间、各资源占用率以及关机或重启记录; 3)通过查看日志中的存活标记及日志记录时间,确认服务器有无发生宕机问题; 4)最后,对有问题的服务器进行维护。
【专利摘要】本发明公开了一种批量监控Linux服务器运行状态的方法,所述方法通过在网络中一台监控节点上部署监控脚本,定时获取网络上其它服务器的运行状态,并将结果保存到本监控节点上;当有服务器发生宕机或其它异常情况时,监控节点就会检测到错误,同时生成错误日志并保存到每台服务器对应的监控日志中,实现批量对服务器的运行状态进行实时监控。本发明提出的基于Shell脚本的实时监控方法,将会在监控节点上部署批量扫描器,不会占用被监控服务器的系统资源。同时将所有服务器的运行状态数据统一输送到监控节点上,十分方便运维人员主动维护。而且,当服务器状态异常后,运维人员还可以从日志中轻易确定故障发生的时间,非常实用。
【IPC分类】H04L12/24, H04L12/26
【公开号】CN105490870
【申请号】CN201510804986
【发明人】李洋, 任华进
【申请人】浪潮电子信息产业股份有限公司
【公开日】2016年4月13日
【申请日】2015年11月20日