1.编辑服务器巡检脚本
bash
复制代码
[root@master ~]# vim check.sh
2.剖析服务器巡检项目脚本的内容及含义
2.1安装服务器巡检相关软件
bash
复制代码
yum install bc sysstat net-tools lrzsz -y &> /dev/null
2.2获取服务器主机名
bash
复制代码
system_hostname=$(hostname | awk '{print $1}')
2.3获取服务器主机IP地址
bash
复制代码
system_hostname=$(hostname | awk '{print $1}')
2.4获取服务器系统信息
bash
复制代码
system_ip=$(ip a | grep "global" | awk '{print $2}'| awk -F "/" '{print $1}')
2.5获取服务器系统信息
bash
复制代码
system=$(grep "^NAME" /etc/os-release | awk -F \" '{print $2}')
2.6获取服务器系统版本
bash
复制代码
version=$(awk '{print $3 $4}' /etc/openEuler-release)
2.7获取总内存信息
bash
复制代码
mem_total=$(free -m | awk '/Mem/{print $2}')
2.8获取已用内存信息
bash
复制代码
mem_use=$(free -m | awk '/Mem/{print $3}')
2.9获取可用内存信息
bash
复制代码
mem_free=$(free -m | awk '/Mem/{print $4}')
2.10获取CPU核心数
bash
复制代码
cpu_mun=$(grep -c "processor" /proc/cpuinfo)
2.11获取CPU使用率
bash
复制代码
cpu_use=$(top -n 1 -b | awk '/%Cpu/{print $2}')
2.12获取系统当前1分钟负载
bash
复制代码
load_1=$(uptime | awk '{print $8}'| sed -n 's/\,//gp')
2.13获取系统当前5分钟负载
bash
复制代码
load_5=$(uptime | awk '{print $9}'| sed -n 's/\,//gp')
2.14获取系统当前15分钟负载
bash
复制代码
load_15=$(uptime | awk '{print $10}')
2.15获取磁盘I/O信息
bash
复制代码
disk_io=$(iostat -d -x -k 1 1 | awk '/sda/{print $1,$14"ms"}')
2.16获取磁盘使用率大于50%的信息
bash
复制代码
disk_lv=$(df -Ph | awk '{if(+$5>50) print "分区:"$1,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"使用率:"$5}')
2.17获取磁盘使用信息
bash
复制代码
disk_fq=$(df -h | grep "root" | awk '{print "分区:"$1}')
disk_to=$(df -Ph | grep "root" | awk '{print "总空间:"$2}')
disk_us=$(df -Ph | grep "root" | awk '{print "使用空间:"$3}')
disk_fe=$(df -Ph | grep "root" | awk '{print "剩余空间:"$4}')
disk_ux=$(df -Ph | grep "root" | awk '{print "磁盘使用率:"$5}')
disk_ux1=$(df -Ph | grep "root" | awk '{print $5}')
2.18巡检信息保存路径
bash
复制代码
path="/root/monitor.txt"
2.19内存阈值
bash
复制代码
mem_mo='50'
2.20写入巡检信息到文件
bash
复制代码
echo -e " " > $path
echo -e "主机名:"$system_hostname >> $path
echo -e "服务器IP:"$system_ip >> $path
echo -e "服务器系统名:"$system >> $path
echo -e "服务器系统版本:"$version >> $path
echo -e "总内存:"$mem_total >> $path
echo -e "已使用内存:"$mem_use >> $path
echo -e "可用内存:"$mem_free >> $path
echo -e "CPU核心数:"$cpu_mun >> $path
echo -e "CPU使用率:"$cpu_use >> $path
echo -e "磁盘I/O:"$disk_io >> $path
if [[ $(echo $disk_ux1 | sed s/%//g) -gt 50 ]]
then
echo $disk_fq >> $path
echo $disk_to >> $path
echo $disk_us >> $path
echo $disk_fe >> $path
echo $disk_ux >> $path
echo "磁盘巡检状态:不正常" >> $path
else
echo $disk_fq >> $path
echo $disk_to >> $path
echo $disk_us >> $path
echo $disk_fe >> $path
echo $disk_ux >> $path
echo "磁盘巡检状态:正常" >> $path
fi
PERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total)))
PERCENT_1=$(echo $PERCENT | sed 's/%//g')
if [[ $PERCENT_1 -gt $mem_mo ]]
then
echo -e "总内存大小:$mem_total MB" >> $path
echo -e "已用内存:$mem_use MB" >> $path
echo -e "内存剩余大小:$mem_free MB" >> $path
echo -e "内存使用率:$PERCENT" >> $path
echo -e "内存巡检状态:不正常" >> $path
else
echo -e "总内存大小:$mem_total MB" >> $path
echo -e "已用内存:$mem_use MB" >> $path
echo -e "内存剩余大小:$mem_free MB" >> $path
echo -e "内存使用率:$PERCENT" >> $path
echo -e "内存巡检状态:正常" >> $path
fi
echo -e "平均1分钟负载:$load_1\n平均5分钟负载:$load_5\n平均15分钟负载:$load_15" >> $path
3.运行服务器巡检项目脚本
bash
复制代码
[root@master ~]# bash check.sh
[root@master ~]# ls
anaconda-ks.cfg check.sh monitor.txt
[root@master ~]# cat monitor.txt
主机名:master
服务器IP:192.168.75.154
服务器系统名:openEuler
服务器系统版本:22.03(LTS-SP4)
总内存:3375
已使用内存:410
可用内存:2538
CPU核心数:2
CPU使用率:0.0
磁盘I/O:sda 0.00ms
分区:/dev/mapper/openeuler-root
总空间:27G
使用空间:2.1G
剩余空间:24G
磁盘使用率:8%
磁盘巡检状态:正常
总内存大小:3375 MB
已用内存:410 MB
内存剩余大小:2538 MB
内存使用率:12%
内存巡检状态:正常
平均1分钟负载:0.00
平均5分钟负载:0.01
平均15分钟负载:0.00
备份:服务器巡检脚本完整版
bash
复制代码
#!/bin/bash
#版本:V1.0
#作者:jeams
#日期:2025-8-5
#功能:服务器巡检脚本
yum install bc sysstat net-tools lrzsz -y &> /dev/null
#获取服务器主机名
system_hostname=$(hostname | awk '{print $1}')
#获取服务器主机IP地址
system_ip=$(ip a | grep "global" | awk '{print $2}'| awk -F "/" '{print $1}')
#获取服务器系统信息
system=$(grep "^NAME" /etc/os-release | awk -F \" '{print $2}')
#获取服务器系统版本
version=$(awk '{print $3 $4}' /etc/openEuler-release)
#获取总内存信息
mem_total=$(free -m | awk '/Mem/{print $2}')
#获取已用内存信息
mem_use=$(free -m | awk '/Mem/{print $3}')
#获取可用内存信息
mem_free=$(free -m | awk '/Mem/{print $4}')
#获取CPU核心数
cpu_mun=$(grep -c "processor" /proc/cpuinfo)
#获取CPU使用率
cpu_use=$(top -n 1 -b | awk '/%Cpu/{print $2}')
#获取系统当前1分钟负载
load_1=$(uptime | awk '{print $8}'| sed -n 's/\,//gp')
#获取系统当前5分钟负载
load_5=$(uptime | awk '{print $9}'| sed -n 's/\,//gp')
#获取系统当前15分钟负载
load_15=$(uptime | awk '{print $10}')
#磁盘I/O
disk_io=$(iostat -d -x -k 1 1 | awk '/sda/{print $1,$14"ms"}')
#获取磁盘使用率大于50%的信息
disk_lv=$(df -Ph | awk '{if(+$5>50) print "分区:"$1,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"使用率:"$5}')
#获取磁盘使用信息
disk_fq=$(df -h | grep "root" | awk '{print "分区:"$1}')
disk_to=$(df -Ph | grep "root" | awk '{print "总空间:"$2}')
disk_us=$(df -Ph | grep "root" | awk '{print "使用空间:"$3}')
disk_fe=$(df -Ph | grep "root" | awk '{print "剩余空间:"$4}')
disk_ux=$(df -Ph | grep "root" | awk '{print "磁盘使用率:"$5}')
disk_ux1=$(df -Ph | grep "root" | awk '{print $5}')
#巡检信息保存路径
path="/root/monitor.txt"
#内存阈值
mem_mo='50'
#写入巡检信息到文件
echo -e " " > $path
echo -e "主机名:"$system_hostname >> $path
echo -e "服务器IP:"$system_ip >> $path
echo -e "服务器系统名:"$system >> $path
echo -e "服务器系统版本:"$version >> $path
echo -e "总内存:"$mem_total >> $path
echo -e "已使用内存:"$mem_use >> $path
echo -e "可用内存:"$mem_free >> $path
echo -e "CPU核心数:"$cpu_mun >> $path
echo -e "CPU使用率:"$cpu_use >> $path
echo -e "磁盘I/O:"$disk_io >> $path
if [[ $(echo $disk_ux1 | sed s/%//g) -gt 50 ]]
then
echo $disk_fq >> $path
echo $disk_to >> $path
echo $disk_us >> $path
echo $disk_fe >> $path
echo $disk_ux >> $path
echo "磁盘巡检状态:不正常" >> $path
else
echo $disk_fq >> $path
echo $disk_to >> $path
echo $disk_us >> $path
echo $disk_fe >> $path
echo $disk_ux >> $path
echo "磁盘巡检状态:正常" >> $path
fi
PERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total)))
PERCENT_1=$(echo $PERCENT | sed 's/%//g')
if [[ $PERCENT_1 -gt $mem_mo ]]
then
echo -e "总内存大小:$mem_total MB" >> $path
echo -e "已用内存:$mem_use MB" >> $path
echo -e "内存剩余大小:$mem_free MB" >> $path
echo -e "内存使用率:$PERCENT" >> $path
echo -e "内存巡检状态:不正常" >> $path
else
echo -e "总内存大小:$mem_total MB" >> $path
echo -e "已用内存:$mem_use MB" >> $path
echo -e "内存剩余大小:$mem_free MB" >> $path
echo -e "内存使用率:$PERCENT" >> $path
echo -e "内存巡检状态:正常" >> $path
fi
echo -e "平均1分钟负载:$load_1\n平均5分钟负载:$load_5\n平均15分钟负载:$load_15" >> $path