批量自动巡检Linux服务器
2018-11-06
服务器巡检方式较多,主要分为手工巡检和自动巡检,巡检内容也因信息系统各异侧重不同。本文主要对Linux服务器日常巡检内容和批量自动巡检进行探讨,从而提高管理员工作效率。
Linux服务器日常巡检内容
Linux服务器日常巡检,除了硬件必须现场检查环境温湿度、设备风扇和设备状态灯等外,其他都可以远程登录控制台通过命令方式加以检查。巡检内容主要包括Linux系统、CPU、内存、文件系统、网络服务、安全、日志、定时任务和应用等方面。
1. Linux系统检查
系统主要检查系统内核版本、发行版本、主机名、是否启用SELinux、默认语言、编码、系统当前时间和最后启动时间等。
# uname –a
//查看内核版本情况
# head -n 1 /etc/issue
//查看系统发行版本
# hostname
//查看计算机名
# /usr/sbin/sestatus
//查看SELinux启用状态
# cat /etc/sysconfig/i18n
//查看系统语言和编码
# date +'%F%T'
//查看系统当前时间
# uptime
//查看系统最后启动时间
2. CPU信息检查
# cat /proc/cpuinfo
通过该命令,可以详细了解CPU的品牌、型号、个数、频率、核数、超线程等信息。
# top
top命令动态显示,可以详细查看CPU使用情况,%us表示用户占用CPU百分比,%sy系统占用CPU百分比,%ni进程占用CPU百分比,%id空闲CPU百分比,%wa等待输入输出CPU百分比,%wa一般不能高于20%-30%。top命令还提供了系统1分钟前、5分钟前和15分钟前负载平均值,类似命令uptime。
3.内存检查
主要检查服务器内存总量、已使用内存、可用内存、缓存、Swap交换分区信息。可用内存过低,系统负载过重,会造成系统速度缓慢。
# free –m
//查看内存使用情况
4.文件系统检查
主要检查文件系统挂载情况,文件系统分区情况、文件系统空间使用情况、inode使用情况和目录所占空间大小等。如果文件系统可用空间低于20%,需要及时删除无用数据或扩充存储空间。
# cat /etc/fstab
//查看文件系统挂载表
# fdisk –l
//查看文件系统分区情况
# df –lh
//查看文件系统空间使用情况
# df –i
//查看inode使用情况
# du -sh /opt
//查看目录/opt所占空间大小
5.网络服务检查
通过网络检查,了解网卡IP地址配置、系统路由表、网络所有连接、网络TCP/UDP监听端口和系统后台服务等。
# ifconfig –a
//查看IP地址配置
# route –n
//查看系统路由表
# netstat –an
//查看网络连接
# netstat -lntp
//查看网络TCP监听端口
# netstat –lnup
//查看网络UCP监听端口
# chkconfig –list
//查看系统后台服务
# /etc/rc.d/rc.local
//查看自启动服务
6.系统安全检查
系统安全检查环节非常重要。通过安全检查,可以知道系统账号、组和用户权限是否异常,系统密码策略、用户最近登录系统情况,当前哪些用户在线等。
# cut -d: -f1 /etc/passwd
//查看系统所有用户
# cut -d: -f1 /etc/group
//查看系统所有组
# grep -v "#" /etc/login.defs | grep -E"PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_MIN_LEN|PASS_WARN_AGE"
//检查系统密码策略
# last
//用户最近登录系统情况
# w
//当前在线用户
7.日志检查
Linux系统拥有强大的日志记录功能,能忠实记录系统内核和各类程序、服务产生的错误信息、警告信息和其他普通信息。这些信息有助于管理员了解系统的运行状况、账号登录注销操作情况、系统面临安全威胁等,对系统故障诊断至关重要。系统日志以syslog格式存储。
# more /var/log/message
//查看系统报错日志
# more /var/log/secure
//查看系统安全日志
# more /var/log/boot.log
//查看系统引导日志
8.定时任务检查
Linux的定时任务守护进程是crond,类似Windows系统的计划任务,可周期性地执行系统任务和用户应用或脚本。用户数据备份或数据库导出备份等,都可编写成脚本放入定时任务周期执行。
# crontab –l
//查看当前用户的计划任务
9.应用检查
检查指定应用程序是否在线运行,主要检查该应用程序的进程是否正常运行即可。例如检查nginx网站服务器:
# ps -ef|grep nginx
Linux服务器批量自动巡检
随着Linux服务器数量增多,如果管理员登录控制台,手工输入各类指令对服务器性能指标、系统日志进行逐台巡检,并将命令输出结果采集汇总,效率不高。
SecureCRT是常用的终端仿真程序,有完善的脚本支持功能(如图1),可批量对Linux服务器进行自动巡检。
脚本工作目录是D:work,在该目录下创建Linux服务器清单文件linux-ip.txt,该文件由服务器IP、root用户和root密码三部分组成,空格分开。如:
192.168.1.1 root Abcd1234
192.168.1.2 root Abcd1234
...
图1 SecureCRT脚本执行界面
下面的SecureCRT执行脚本,以查看Linux内核信息为例,批量对所有Linux服务器进行自动巡检,并将巡检内容采集后记录成文本文件,供管理员进一步分析汇总生成巡检报告,非常实用,有兴趣的朋友可根据实际巡检内容对脚本代码进行扩展。
#$language ="VBScript"
#$interface = "1.0"
Sub Main
Const ForReading = 1
Dim fso,file1,line,params,path
path = "d:work"
Set fso = CreateObject("Scripting.FileSystem Object")
Set file1 = fso.Open TextFile(path & "linux-ip.txt" ,Forreading, False)
crt.Screen.Synchronous= True
DO While file1.AtEnd OfStream <> True
line = file1.ReadLine
if line<>"" then
params = Split (line)
if params(0)<>"" then
On Error Resume next
'SSH登录Linux服务器
crt.Session.Connect "/SSH2 /L " & params(1) & "/PASSWORD " & params(2)& " /C AES-128 /M MD5 " ¶ms(0)
crt.Screen.waitFor String "~]#"
'以IP地址为文件名记录SecureCRT session 日志
crt.session.LogFile Name = path & params(0)&".txt"
crt.session.Log(true)
'查看操作系统内核信息
crt.Screen.Send"uname -a" & chr(13)
crt.Screen.waitFor String "]#"
crt.Session.Disconnect
End if
End if
loop
crt.Screen.Synchronous= False
file1.Close
End Sub