利用shell监控服务器状态并且EMAIL获取报警
利用shell监控服务器状态并且EMAIL获取报警
Sandy其实之前博客中也有说到过,现在又老调重启了因为我把阿里云的监控全部删除了.要脱坑就全部一起脱不想留下任何有关联的东西!不多说了我们开始来折腾吧~
首先我们来配置MAIL部分,MAIL部分我们只用到发送所以就装个sendmail就好了
1 | sudo apt-get install sendmail |
下面几个包是可选的:
squirrelmail //提供webmail
spamassassin //提供邮件过滤
mailman //提供邮件列表支持
dovecot // 提供IMAP和POP接收邮件服务器守护进程
注意:
使用带附件的功能,则还需要安装sharutils,
安装命令:
1 | sudo apt-get install sharutils;(yum install sharutils ) |
终端输入命令:
1 | ps aux |grep sendmail |
出现这个代表已经安装成功了!接下来就设置配置
二、配置
sendmail 默认只会为本机用户发送邮件,只有把它扩展到整个Internet,才会成为真正的邮件服务器。
打开sendmail的配置宏文件:/etc/mail/sendmail.mc
1 | vi /etc/mail/sendmail.mc |
找到如下行:
1 | DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl |
修改Addr=0.0.0.0 ,表明可以连接到任何服务器。
生成新的配置文件:
1 | cd /etc/mail |
三、测试发送邮件
测试例子:
1 | echo "content:e9china server normal" | mail -s "title:Server connection" notice@e9china.net |
说明文档:常用发送邮件方式如下
1.如何写一般的邮件: mail test@126.com Cc 编辑抄送对象,Subject:邮件主题,输入回车,邮件正文后,按Ctrl-D结束
2.快速发送方式: echo “邮件正文” | mail -s 邮件主题 test@126.com
3.以文件内容作为邮件正文来发送: mail -s test test@126.com < test.txt
4.发送带附件的邮件: uuencode 附件名称 附件显示名称 | mail -s 邮件主题 发送地址
例如: uuencode test.txt test.txt | mail -s Test test@126.com
第一次执行可能收信比较慢,可以多执行几次等收到信以后把发件人添加到白名单.下次收信基本都是1分钟之内可以做到!需要秒收的朋友那就得自己配置stmp了!
如果执行shell的时候出现: You have new mail in /var/mail/root
直接删除目录即可
1 | rm -rf /var/mail/root |
这样邮件发送配置好了.然后我们来配置shell了
首先我们建立2个php文件,放置到url可以访问到目录:
nginx.php文件
1 | vi nginx.php |
mysql.php文件
1 | vi mysql.php |
建立shell监控文件
check_p+m.sh
1 | #!/bin/bash |
这里我们标题和内容都加入了服务器名称和url,目的是当你收到报警邮件的是可以点击url看一下状态!不用急急忙忙的上服务器~这个设置人不在电脑旁的时候非常有用!
然后我们给以check_p+m.sh可以root允许的权限
1 | chmod 777 check_p+m.sh |
我们现在需要他每1分钟检查一下,那么就用到我们的老朋友crontab了
1 | * */1 * * * bash /root/check_p+m.sh |
这样就完成了.完成以后记得要测试,看会不会生效.如果你使用的是lnmp那么命令如下:
1 | /etc/init.d/php-fpm stop |
执行完毕等待一分钟,看看会不会自动启动和接受到邮件.好了教程就到这里结束了



