当您的服务器停止时,如何使monit发送短信提醒
版本1.0
作者:Falko Timme
本教程将介绍如何在服务发生故障时,将monit配置为每个SMS向您的手机发送警报消息。 因为monit只能发送电子邮件而不是短信,我们将使用电子邮件至sms网关,monit将发送电子邮件,电子邮件到sms网关会将电子邮件转换为SMS消息。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1初步说明
我假设你已经设置了monit,例如如下所示: http : //www.youcl.com/server_monitoring_with_munin_monit_debian_etch或这里: http : //www.youcl.com/server_monitoring_with_munin_monit_fedora_7 。
在本教程中,我想监视一个Web服务器(网站为www.mywebsite.com
),看看它是否仍在运行。 因此,我在第二台服务器( monit.example.com
)上使用monit,以便monit可以发送警报,如果Web服务器因为任何原因而失败(假设您在Web服务器上安装了monit) - 如果服务器关闭,monit不能发送任何警报...)。
我在这里使用的短信服务是SMS77.de (如果您想使用该服务,您必须先注册并至少支付5欧元到您的预付帐户)。 如http://www.sms77.de/email2sms.html(德文)所述,您发送到网关的电子邮件需要以下格式:
Subject: Text of the SMS
Text of the Mail: Email2SMS-Key#Recipient#SMS Type#Sender
您可以在SMS77.de帐户设置中指定email2sms密钥; 收件人是您手机的电话号码(如果要将邮件发送给多个收件人,请用逗号分隔电话号码); 作为SMS类型,我们使用basicplus
,每短信只需要3,5美分(欧分)。 发件人是可选的,所以我把它留下。
我会告诉monit格式化其警报消息,以便它们匹配所需的格式。
当然,您也可以使用任何其他电子邮件至站点网关。 这只是一个如何做的例子,我与SMS77.de没有任何关系。
2配置monit
在monit.example.com
上打开/ etc / monit / monitrc
,并在其中
添加以下节点(在文件末尾):
vi /etc/monit/monitrc
[...] check host www.mywebsite.com with address www.mywebsite.com if failed port 80 protocol http and request "/index.php" for 4 cycles then alert if failed icmp type echo count 5 with timeout 15 seconds for 4 cycles then alert alert email2sms@sms77.de { connection, timeout, icmp } with mail-format { from: monit@monit.example.com subject: $SERVICE $EVENT at $DATE on $HOST message: 123456#0170123456789#basicplus } |
如你所见,使用这个配置,monit会从www.mywebsite.com
请求文件index.php
, 除此之外
,它将尝试ping主机www.mywebsite.com
。 为了确保monit不会发出太多的误报,只有测试连续四次失败( 4个周期
)才会发送警报 - 这应该表明真的有问题。
警报将被发送到电子邮件至站点网关电子邮件地址,但只有当有连接错误,超时或丢失的ping(所有可用的事件的列表可以在这里找到: http://www.tildeslash。 com / monit / doc / manual.php#alert_message_layout ),邮件格式部分指定警报邮件的格式。 您可以在电子邮件中使用的变量也列在http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout上 。
请将此调整到您的电子邮件至站点网关!
之后重新启动monit:
/etc/init.d/monit restart
而已!
3链接
- monit: http : //www.tildeslash.com/monit/index.php