以下内容仅为提供思路
对于运维来说,每天对所管理的服务器进行一次以上的巡检是最基本的工作,当然,天天free、df的敲键盘很麻烦,这时候最好写一个日常巡检的脚本,辛苦一天,轻松一年
巡检脚本有两种思路,一种是当你想亲眼看一看系统状况的时候,每台服务器都亲自执行一遍这个脚本;另一种是将所有功能封装,执行脚本并不会反馈给你任何数据,只是在当有些参数超过你设定的阈值时发送报警邮件
下面我们两个都来写个模板
第一种
#!/bin/bash
menu(){
cat <<EOF
+------------------------------------------------+
| 日常巡检脚本 |
| 1.查看文件系统使用率 |
| 2.查看内存使用率 |
| 3.查看系统负载 |
| 4.统计系统连接数 |
| 5.统计系统进程数 |
| 6.统计当前磁盘分区信息 |
| 7.按Enter退出 |
+------------------------------------------------+
EOF
}
menu
while true
do
echo -en "请输入你要查看的内容:"
read action
if [ -z "$action" ];then
echo "See you later"
break
fi
case $action in
1)
df -h
;;
2)
free -h
;;
3)
uptime
;;
4)
ss -tan | grep -i "estab" | wc -l
;;
5)
ps aux | grep -v "grep" | wc -l
;;
6)
fdisk -l
;;
esac
done
这个脚本非常简陋,但是基本的框架已经有了,接下来就可以根据这个框架添加自己需要的功能
第二种
第二种思路用ansible的playbook更好实现,不过如果你非要写shell脚本然后用ansible的scripts模块执行也行
#!/bin/bash
ip=ifconfig | grep broadcast | awk '{print $2}'
# 文件系统
df=`df -h | grep -v '文件系统' | tr -s ' ' | tr ' ' :`
for i in $df
do
j=`echo $i | awk -F: '{print $5}' | awk -F% '{print $1}'`
k=`echo $i | awk -F: '{print $1}'`
if [ $j -gt 80 ]
then
echo "文件系统:$k 使用量已达$j" | mail -s "报警:服务器$ip文件系统使用量超过阈值" ********@163.com
fi
done
# 还可以写各种要监控的参数,我这里就不再写了,大家可以随意添加自己想要查看的信息