因为工做须要 必须保证人家网站7X24小时不间断运行因此写了 下面这个小脚本java
其实如今一个网站有N多服务要监控的 好比我这个apache,tomcat.java等 乱七八糟的web
监控apache服务器的状态 若是apache服务down了则自动启动服务并邮件短信通知管理员 绝对实用 适用于监控大部分网络服务 我这里用的是139邮箱 发到邮箱就自动发到手机上了能够换成其余邮箱还想有发短信的功能的话 只能用语音网关了 shell
废话很少说 先把脚本分享出来 可是使用此脚本的前提为apache
得先把hosts文件在127.0.0.1后面加上一条a.b.com这条记录 做为发送邮件服务器的域名tomcat
而且服务器上装有并启用sendmail服务 你的手机也开通139邮箱了不然发不出来的bash
#!/bin/bash服务器
#检测apache 服务状态 若是关闭则重启服务,记录日志并进行邮件短信告警网络
#利用apache 的80来进行监测tcp
web=`netstat -ant | grep 80 | awk '{print $4}' | awk -F : '{print $4}'`ide
apachelog=/var/log/httpd/service.log
/sbin/service sendmail start
if [ $web = 80 ]
then
echo "httpd is running"
else
echo "the web service alredy restart"
echo "`date` the web service alredy restart" >> $apachelog
/etc/init.d/httpd start
sleep 2
echo `date` httpd aleady restart | /usr/sbin/sendmail -v your telephonenumber@139.com > /dev/null
fi
1. 先看看 web=`netstat -ant | grep 80 | awk '{print $4}' | awk -F : '{print $4}'` 这句什么意思
输入netstat –ant 先看下效果
[root@localhost ~]# netstat -ant | grep 80
tcp 0 0 :::80 :::* LISTEN能够发现 apache 服务用的就是上面这一行的部分 我们要作的就是把这个80端口给取出来 这里用到一个shell中经常使用的函数 awk 用法就是
awk -F # ‘{print $4}’ 其实awk就是取值用的 –F 指定按什么来分来字符串 不指定默认为空格 ‘{print $4}’就是把取到的第四个数值输出 这里须要注意print用的是单引号不是反撇号 具体看下这里怎么用的
这里我没有指定分隔符默认为 空格 $4就是取第四个 你能够按空格来分割数下
[root@localhost ~]# netstat -ant | grep 80 | awk '{print $4}'
:::80
一样的到底 把:做为分隔符 取到第4个就行
[root@localhost ~]# netstat -ant | grep 80 | awk '{print $4}' | awk -F : '{print $4}'
80
OK 到这里端口就取出来 看起来是麻烦点 作起来很快的
2 选择一个地方作日志收集 这个不用说了看本身状况了 能够指定不存在的空文件 可是目录必须存在 这样会自动在指定的地方建立的
apachelog=/var/log/httpd/service.log
3.判断服务情况是否正常 若是down掉作启动操做并日志记录,邮件短信警告等
这里先判断端口数是否为80 若是服务down掉 这个$web会为空的 则判断会不成立的 进行到else 部分
#判断80端口是否正确
if [ $web = 80 ]
then
echo "httpd is running"
else
#先输出一条信息告知如今是什么状况
echo "the web service alredy restart"
#将何时作什么操做等信息输出到指定的日志文件内
echo "`date` the web service alredy restart" >> $apachelog
#执行重启服务操做
/etc/init.d/httpd start
sleep 2
#发送邮件到指定邮箱
echo `date` httpd aleady restart | /usr/sbin/sendmail -v 你的手机号码@139.com > /dev/null
#退出判断
fi
OK 到这里一个监控服务的脚本就能够基本实现了
若是邮件收不到等问题的时候先执行下mailq 看下邮件队列有没有邮件 日志记录等 若是仍是不行 请尝试重启sendmail服务等 操做
此脚本使用于绝大部分服务的监控工做能够很方便的作应急处理 仓促写的 哪位有什么须要加的功能欢迎提 关于 sendmail服务这块 有的服务器可能关掉了 后面我会再说不用sendmail也能够实现发送邮件功能的