为 Ubuntu Server 配置自动发邮件警报的 Monit

前几天奇点的服务器因为 CPU 100% 而被限频了,导致最近服务器的响应非常慢。我一直没有在服务器上做一些最基本的监控服务「比如连续多久 CPU 使用过 95% 就发一封警报邮件」之类的,这次事件让我决定做起这件事情。

我采用的是 Monit 这个开源工具,结合 Mailgun 邮件发送服务。下面就是一份最基础的安装+配置向导。

图为过去一周我的 Server 的 CPU 占用:为何是 25%?因为我用的主机会将长期 CPU 使用超过 100% 的 Server 限制频率为原有的 1/4。

Ubuntu Monit

安装 Monit

首先在 Ubuntu 上安装 Monit:

sudo apt-get install monit

安装成功后,编辑配置文件:

sudo vim /etc/monit/monitrc

我主要做了以下改动,是满足我需求的最小的改动。

配置 Monit

以 60 秒为间隔做一次检查

默认是 120 秒,但我觉得 60 秒这个整数比较好😄

set daemon 60

设置 Mail Server 和目标邮箱

我用的是 Mailgun 的免费档服务,足够给我发 Alert 邮件了。

set mailserver smtp.mailgun.org port 587
    username postmaster@HOST password "YOURPASSWORD"
    using TLSV1 with timeout 30 seconds
set alert TARGET@HOST

设置 Alert 触发条件

主要条件是:15分钟的负载超过 4,或者 10 次检查的 CPU 使用率超过 95%(也就是 10 分钟),或者内存占用超过 75%,或者 SWAP 使用超过 50%。

这些触发条件设置的相对极端一点,但不一定适合未来,所以要不断调整。

check system $HOST
    if loadavg (15min) > 4 then alert
    if cpu usage > 95% for 10 cycles then alert
    if memory usage > 75% then alert
    if swap usage > 50% then alert

使用 Monit

配置完成后,在终端重启 Monit,如果一切顺利的话,你就会立刻收到一封 Monti 启动的邮件,没错,默认的规则是会将 Monit 的关闭和启动都会发送邮件的。

sudo systemctl restart monit

如果没有收到邮件,那么一定是哪里配置出了问题,比如邮件服务出问题的话,你可以在 Log 里面看到「Relaying denied」之类的信息,总之查看 Log 即可:

sudo tailf /var/log/monit.log

图为成功发送邮件的 Monit:

Ubuntu Monit

后记

作为一个业余的运维,这样的监控+警报已经能满足我这样单一 Server 的简单需求了,假如 Mailgun 之类的邮件服务已经注册好的话,整个设置也非常简单。

不知道读到最后的你一般采用什么样的方式来监控 Server?欢迎留言。

<推广> 本站推荐使用使用 BandwagonHost 来搭建自己的虚拟主机和相关网络服务。

4 Comments

  1. Prometheus & Grafana. 比較重量級了

  2. NewRelic 本來免費的第三方服務,也挺好用。不過現在新註冊的賬號都要收費才能監控 Server 了

  3. 以前写过性能监控和邮件报警的开源项目,可定时检查 CPU、内存、磁盘的使用,而且是跑在docker里的。当时研究这些东西的时候把 sar 啥的都看了一遍,最后发现还不如自己实现更简单。
    邮件对Mailgun无爱,最简单的还是去调用SMTP。

Leave a Comment