SA对于服务器的监控是很必要的,但是如果管理的服务器很多,也不可能24小时在线监控。
本文的主要内容就是实现,服务器如果出现异常,会通过短信方式,直接把服务器当前状况发送到管理员手机,SA可以第一时间知道服务器发生异常,从而以最快的时间予以处理。
原理很简单,中国移动提供139.com这样的邮箱,如果有邮件到达,会同时发送邮件标题到管理员对应手机,邮箱名是 你的手机号@139.com,例如:13036110648@139.com,当此邮箱接收到邮件时,会同时给13036110648这个手机发送邮件到达信息,邮箱注册地址http://mail.139.com/
在实现下面功能之前,请务必先注册好邮箱(此功能现在移动免费提供)
下面我们来实现一些功能:
监控用户登录
我们知道用户一般登录的时候都会加载登录脚本 ~/.bashrc,那么我们可以在这个脚本里面加入:
#echo 'at now + 1 minutes -f /data/checklogin.sh > /dev/null 2>&1' >> ~/.bashrc
那么此用户登录的时候就会在1分钟之后,执行/data/checklogin.sh这个脚本(为什么要在一分钟之后,因为如果是自己登陆,就不需要发送短信,给自己时间来用atrm 取消此任务计划),此脚本内容如下
#cat /data/checklogin.sh
#!/bin/sh
echo "`who`" >> /data/login.log
mail -s "`who`" 13036110648@139.com < /data/login.log
#chmod a+x /data/checklogin.sh
#touch /data/login.log
#chmod a+w /data/login.log
这里做完就OK了,那么每次这个用户登录的时候,就会把当前的已登录用户信息以短信方式发送到管理员手机号
当然你也可以监控所有用户登录,那么就应该修改/etc/bashrc这个登录脚本
监控服务运行状态
#!/bin/sh
server_all_list=(\
59.175.212.145:80 \
59.175.212.145:21 \
59.175.212.145:3306 \
)
date=$(date +"%Y-%m-%d_%H:%M:%S")
server_all_len=${#server_all_list[*]}
i=0
while [ ${i} -lt ${server_all_len} ]
do
server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')
server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')
if /usr/bin/nc -vv -z -w 3 ${server_ip} ${server_port} > /dev/null 2>&1
then
:
else
if /usr/bin/nc -vv -z -w 10 ${server_ip} ${server_port} > /dev/null 2>&1
then
:
else
echo "${date},服务器${server_ip},端口${server_port}无法访问" >> /data/monitor/server.log
mail -s "${date},服务器${server_ip},端口${server_port}无法访问" 13036110648@139.com < /data/monitor/server.log
fi
fi
i=$((i+1))
done
亿恩科技地址(ADD):郑州市黄河路129号天一大厦608室 邮编(ZIP):450008 传真(FAX):0371-60123888
联系:亿恩小凡
QQ:89317007
电话:0371-63322206 本文出自:亿恩科技【www.enkj.com】
服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]
|