shellscript-6-20s监控一次系统负载状态超过10就记录
脚本内容
#!/bin/bash
# 监控脚本,监控系统负载,超过10 记录系统状态信息
# author: yolo
# 1 系统负载查看 uptime,过去一分钟的平均负载
# 2 系统状态命令 top vmstat ss
# 3 要求每20s监控一次
# 4 系统状态信息保存路径/opt/logs/ 保留一个月, 文件名称建议 `date +%s`
# 检查是否存在目录 /opt/logs 不存在就创建
[ -d /opt/logs ] || mkdir -p /opt/logs
# while 死循环
while :
do
# 1分钟负载 五分钟负载 十五分钟负载 获取第一个一分钟负载,只保留小数点前数字
load=`uptime | awk -F 'average:' '{print$2}' | cut -d "," -f1 | sed 's/ //g' | cut -d '.' -f1`
echo $load
if [ $load -gt 10 ]
then
# 分别记录top vmstat 和ss 命令的执行结果
top -bn1 | head -n 100 > /opt/logs/top.`date +%s`
# 记录10s数据
vmstat 1 10 > /opt/logs/vmstat.`date +%s`
# 记录网络连接状态
ss -an > /opt/logs/ss.`date +%s`
fi
# 休眠20s
sleep 20
# 保留30天日志
`find /opt/logs \( -name "top*" -o -name "vmstat" -o -name "ss*" ) -mtime +30 | xargs rm -rf`
done