站群是一个很庞大的IP+域名的群体,多则几千个,少则几十个起码的!那么这么多的站群怎么去监控它的状态是正常的呢?现在市面上很多比如阿里云监控,监控宝什么的一大堆.但是Sandy懒的很不想一个一个去添加,所以Sandy还是比较倾向于Shell.网站很多大神都写有方案,看了一下基本都是15年之前写的.前人累积 后人拾遗,那么Sandy就来更新以及抄袭一下大神之作.废话不多说~”来屎狗”
老规矩这里要先列出执行脚本的环境:
操作系统:Ubuntu 16.x
使用到的组件:sendmail mutt
1.安装sendmail
1 2 apt-get install sendmail /etc/init.d/sendmail start
需要安装sendmail并开启防火墙的25端口,如果你需要收邮件110端口也要开!
2.安装mutt邮件客户端,并设置相关信息
1 2 3 4 5 6 7 8 apt-get install mutt vi /root/.muttrc set charset="utf-8" #设置发邮件编码 set use_envelope_from=yes set rfc2047_parameters=yes #解决附件乱码问题 set realname="报警" #发件人别名 set use_from=yes #指定是否显示别名 set from=root@localhost #发送人地址,当前主机名称,若配置其他邮箱,需配置协议主机名和密码
3.建立url列表
1 2 vi url www.baid1u.com #故意写错百度域名,等会测试用!多个域名则一行一个
4、创建脚本:check_web.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #!/bin/bash #==================================================== # Author: sandy # Last modified: 2018-4-17 # Filename: check_web.sh # blog:http://blog.e9china.net #==================================================== while true do Mail="xxxxx@163.com" FailCount=0 Retval=0 GetUrlStatus() { for ((i=1;i<=3;i++)) #使用i++判断访问次数,如果wget两次超时则判断网站异常 do wget -T 3 --tries=1 --spider http://${1} >/dev/null 2>&1 #-T超时时间,--tries尝试1次,--spider蜘蛛 [ $? -ne 0 ] && let FailCount+=1; #访问超时时,$?不等于0,则FailCount加1 done if [ $FailCount -gt 1 ];then Retval=1 Date=`date +%F" "%H:%M` echo -e "时间 : $Date\n问题 : $url 您的网站未能运行,请赶紧处理!" | mutt -s "WEB网站监控" $Mail else Retval=0 fi return $Retval #如果返回值为0,就正常退出循环,不为0则继续循环 } for url in `cat url | sed '/^#/d'` do #GetUrlStatus $url && echo yes || echo no GetUrlStatus $url done sleep 2m #死循环,设置没2分钟运行一次 done
5.检查文件
1 2 root@host:~# ls root@host:~# check_web.sh Mail url #如果检查以后出现报警就多出一个sent的文件
6.测试运行
在生成环境下使用
1 2 root@host:~# screen -S web root@host:~# bash check_web.sh
也可以使用crontab 来,具体方法就不多说.具体看以往的帖子