monit 警报设置.png

本文隶属于 实用工具 /网站优化 分类,点击分类名称可以查看更多相关文章;

I. Monit 总体介绍

Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误,同时Monit 包含一个内嵌的 HTTP(S) Web 界面,你可以使用浏览器方便地查看 Monit 所监视的服务器。

官网: https://mmonit.com/monit/

II. 我的需求

网站被攻击,访问不了;需要因此服务器发送邮件警报个人邮箱提醒注意;正好,Monit 能实现发送邮件的功能,而且才500k大小;简直良心;遂花了些时间配置好了,以下就是相关的教程,如若有疑问可以在文末处评论留言或上我们的 TG群组

III. Monit 安装

Ubuntu

apt-get install monit #命令行
/etc/monit/monitrc #主配置文件位置

Centos

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm #命令行
yum -y install monit #安装命令
/etc/monit.conf #主配置文件位置

IV. Monit 发送邮件提醒(使用mailgun)

Monit 的邮件配置修改

着重说明,在Ubuntu server下的配置方式;

vim /etc/monit/monitrc  #ubuntu下编辑配置文件
set mailserver smtp.mailgun.org port 587 #mailgun的smtp服务器以及端口 
username [email protected] password "mailgun给的密钥" #看下文有mailgun的相关说明
using TLSV1 with timeout 30 seconds set
alert [email protected]  #邮件地址更换为自己的

当然,以上是mailgun的配置方式;同理,Gmail 也是可以代发邮件的;(Mailgun有10w条邮件额度/月度);

Mailgun 注册与使用

官网地址:https://signup.mailgun.com/new/signup
mailgun 完全教程:整合Gmail与Mailgun实现免费域名邮箱

使用Gmail注册即可;记得套餐选 Pay as you go

添加域名及添加DNS记录

1.进入 https://app.mailgun.com/app/sending/domains 添加域名
2.推荐使用子域名 例如 limbopro.com
3.Create DKIM Authority 可不选;
4.去你的域名注册商那儿添加 DNS 记录;(如果你用的是Cloudflare,找到DNS那里添加即可;其他注册商?参考文末附注;)
5.填写好后点击 页面末尾 Verify DNS setting 按钮;

mailgun发件设置(邮件地址以及密钥)

1.进入 https://app.mailgun.com/app/sending/domains/

2.选择刚刚添加好的域名;

3.点击SMTP credentials配置你的邮件地址及密钥(即:password);

4.记住你的邮件地址及密钥;

5.好了,去 monit 配置下主配置文件即可;

基本上,已经完事了;

V. 重启monit生效

systemctl restart monit

去你的垃圾箱去瞅瞅;如果没收到,检查下日志;

tail -f /var/log/monit.log #注意这个日志名叫 monit.log 如果不在这个目录,你可能需要使用 find / -name "monit.log"查看它在哪;

VI. 相关实用命令

systemctl start monit #启动monit
systemctl status monit #查看monit运行状态
systemctl stop monit #停止monit
/bin/ps -ef | grep monit |grep -v grep #查看monit运行 pid 及所使用的配置文件
/usr/bin/monit -c /etc/monit/webmonitrc #指定配置文件运行monit
killall monit #杀死所有monit进程

VII. 网站运行与否判定

我这里使用的是如下脚本; 脚本 命名为,webcheck.sh,放置在 /home/ 目录下;记得 chmod +x /home/webcheck.sh 赋予执行权限;

> /home/temp/test.html #清空临时 test.html
> /home/temp/countwebcheck.log; # 清空记录值

curl -o /home/temp/test.html--connect-timeout 10 -m 10 https://limbopro.com/archives/1189.html 
#使用curl命令请求指定html文件到/home/temp/下并命名为`test.html`;

catchnum=$(nohup du /home/temp/test.html > /home/temp/countwebcheck.log) 
#使用`du`命令计算test.html文件大小并把值记录到 countwebcheck.log(注意,网站不能联通时返回文件为0)

results=$(awk '{print $1}' /home/temp/countwebcheck.log)
##提取纪录值记做 results
max=64  
#设定正常值,我这个html文件正常的大小是(64k)

if [ $results -lt $max ]; 
#比较记录值与正常值大小并判定
#如果返回结果要小于这个正常值,则网站不通;
        then
        killall monit;
        #杀掉所有 monit 进程
        sleep 15s;
        #杀掉会需要时间,这里休息 15秒
        /usr/bin/monit -c /etc/monit/webmonitrc;
        #默认配置为 monitrc,这个是我自定义的配置文件,参见后文 个性化警告配置文件发件内容
        #指定配置文件运行 monit ,即按配置文件发送指定内容都指定邮箱;以起到提醒作用;

else
        date=$(env LANG=en_US.UTF-8 date "+%e/%b/%Y/%R")
        echo "${date}" "网站端口 80 连通检测,现已连通!运行正常..." # >> /home/5minutes.log
fi

monit 个性化警告配置文件发件内容

cp /etc/monit/monitrc /etc/monit/webmonitrc #使用cp命令复制一个配置文件副本为 webmonitrc
vi /etc/monit/webmonitrc #编辑 webmonitrc

## 以下是我的个性化警告内容,可以添加到 monit 的邮件配置段落 后面

set mail-format {
from:    Master 0xf limboPro.com <Julia@$HOST>
subject: Web shutdown --  $EVENT $SERVICE
message: 网站暂时无法访问
日期: $DATE
主机: $HOST
描述: 尽快解决!

Your lovely limboPro.com,
Julia sama.
 }

 ## 以上是我的个性化警告内容

你可以试着关闭一下 lnmp,或者 lamp使网站关闭;运行这个脚本试试;如果有效,将脚本加入 cron

crontab -e #运行命令行,即编辑cron文件
* * * * * /home/webcheck.sh #添加该段,即每分钟执行一次检查

VIII. 附注

1.Mailgun 完全教程:奇技淫巧——整合Gmail与Mailgun实现免费域名邮箱
2.其他域名注册商DNS添加记录方法:

GoDaddy
NameCheap
Network Solutions
Rackspace Email & Apps
Rackspace Cloud DNS
Amazon Route 53
Digital Ocean

最后修改:2023 年 09 月 24 日 11 : 02 PM