linux服务器:linux服务器监控手机报警

信息来源: 2胖子网络技术论坛(bbs.erpangzi.com)
文章作者:DODO(http://www.sectop.com/)

SA对于服务器监控是很必要但是如果管理服务器很多也不可能24小时在线监控
本文主要内容就是实现服务器如果出现异常会通过短信方式直接把服务器当前状况发送到管理员手机SA可以第时间知道服务器发生异常从而以最快时间予以处理
原理很简单中国移动提供139.com这样邮箱如果有邮件到达会同时发送邮件标题到管理员对应手机邮箱名是 你手机号@139.com例如:[email protected]当此邮箱接收到邮件时会同时给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`" [email protected] < /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 ':' '{pr $1}')
server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{pr $2}')
/usr/bin/nc -vv -z -w 3 ${server_ip} ${server_port} > /dev/null 2>&1
then
  :

   /usr/bin/nc -vv -z -w 10 ${server_ip} ${server_port} > /dev/null 2>&1
  then
   :
  
   echo "${date}服务器${server_ip}端口${server_port}无法访问" >> /data/monitor/server.log
   mail -s "${date}服务器${server_ip}端口${server_port}无法访问" [email protected] < /data/monitor/server.log
  fi
fi
i=$((i+1))
done
Tags:  linux代理服务器 linuxftp服务器 linux邮件服务器 linux服务器

延伸阅读

最新评论

发表评论