![Apache、MySQL 和 Postfix 的 Monit 配置](https://linux22.com/image/593924/Apache%E3%80%81MySQL%20%E5%92%8C%20Postfix%20%E7%9A%84%20Monit%20%E9%85%8D%E7%BD%AE.png)
我计划使用以下配置在我的生产服务器上启用 Monit。我对 Monit 完全陌生,想听听其他人的建议,或者根据您的经验,我是否应该考虑其他指令来增强我的监控脚本。
我的服务器是CentOS 5.6。
谢谢!
#httpd----
check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if 5 restarts within 5 cycles then timeout
#mysqld----
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if failed host 127.0.0.1 port 3306 then restart
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if 5 restarts within 5 cycles then timeout
#postfix----
check process postfix with pidfile /var/spool/postfix/pid/master.pid
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if 5 restarts within 5 cycles then timeout
答案1
我的 Postfix 部分中为 monit 添加了一个额外的行:
if failed port 25 protocol smtp then restart
根据 Apache 提供的内容,您可以测试请求(例如request "/monit_token"
),而不是纯 HTTP 响应。请求可以是直接到达您的应用程序的内容,而不仅仅是静态文件。同样,这取决于您正在做什么。
由于您已安装 Postfix,因此您应该考虑如果 Postfix 出现故障,Monit 警报实际上将如何发出。就我而言,我正在执行并将set mailserver gmail-smtp-in.l.google.com
邮件发送到 Gmail 帐户,这样我就不依赖自己的邮件服务器的功能来向我发送警报电子邮件。我还有一个 Gmail 过滤器,它会将警报消息转发到 SMS 网关,这样我就可以收到一条短信。
我也有类似这样的配置:
check file alerttest with path /.monit_is_running
alert [email protected] with reminder on 1440 cycles
没有文件/.monit_is_running
,因此此警报将始终每天触发一次。这是 monit 本身的心跳,所以我知道它正在运行(一种“谁监视监视者”的事情)。实际上,这是我从 Serverfault 上的某个人那里得到的想法,但我不记得是谁随口说的。