首页 > 代码库 > shell监控多台主机
shell监控多台主机
用shell写了个脚本同时监控多台主机(监控主机是否在线,cpu,内存,硬盘,io使用状态,并有邮件通知功能),大神看后觉得有不当之处或有更好的实现方式,请不屑笔墨指出。
首先要在被监控主机和监控主机之间建立信任关系,不了解ssh证书验证的可以看看:
http://dragon123.blog.51cto.com/9152073/1586795
安装mutt:
[root@centos-server ~]# yum install mutt
监控列表:
[root@centos-server ~]# cat > iplist.txt <<end > 22.22.22.128 > 22.22.22.129 > 22.22.22.130 > 22.22.22.134 > end
监控脚本:
#!/bin/bash for ip in `cat iplist.txt`;do ping $ip -c1>/dev/null #先检查主机是否在线,如果在线则进行进一步监控 if [ $? -eq 0 ];then hardused=`ssh $ip df -h|grep "/$"|awk ‘{print $4}‘|cut -d% -f 1` memtotal=`ssh $ip free -m|grep Mem|awk ‘{print $2}‘` memused=`ssh $ip free -m|grep Mem|awk ‘{print $3}‘` mem=`expr $memused \* 100 / $memtotal` idelcpu=`ssh $ip top -n1|grep Cpu|awk ‘{print $5}‘|cut -d"." -f1` cpuused=`expr 100 - $idelcpu` if [ $mem -gt 70 ];then #如果内存使用高于70%则邮件通知 echo "warm:$ip memory is $mem"|mutt -s "monitor report" 18507656225@163.com fi if [ $hardused -le 80 ];then #如果硬盘使用已高于80%则邮件通知 echo "warm:$ip the Hard drive capacity is more 80%"|mutt -s"monitor report" 18507656225@163.com fi for hardid in `ssh $ip iostat |grep ^sd|awk ‘{print $1}‘`;do #先取盘符 iostat=`ssh $ip iostat -x|grep $hardid|awk ‘{print $12}‘|cut -d"." -f1` #取得io繁忙状态 echo $iostat if [ $iostat -gt 80 ];then #如果io繁忙高于80%,则邮件通知 echo "ipaddress:$ip,hard:$hardid,iostat:$iostat"|mutt -s"warm" 18507656225@163.com fi done else echo "host:$ip is not alive"|mutt -s"monitor report" 18507656225@163.com #如果主机无法ping通则邮件通知 fi done
每5分钟监控一次(如果出现什么问题,并且这个得不到解决,每5分钟就收到一封邮件,这很令人纠结):
[root@centos-server ~]# crontab -e
*/5 * * * * bash /root/monitor.sh
查收邮件:
本文出自 “龙爱雪琪” 博客,请务必保留此出处http://dragon123.blog.51cto.com/9152073/1594076
shell监控多台主机
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。