Odeslání zprávy při vypnutí serveru

Jak nastavit monit aby odesílal SMS zprávu když je server offline

Tento návod vysvětluje jak je možné nakonfigurovat monit aby odesílal SMS zprávu na Váš mobilní telefon při systémovém selhání.

Protože monit může odesílat pouze emaily, ne SMS, musíme použít nějakou email-to-sms bránu, kterou bude monit odesílat své maily a email-to-sms brána bude konvertovat tyto maily do SMS zpráv.

Toto není jediný způsob, jak lze tuto situaci ošetřit.

1 Úvodní poznámka

Předpokládám, že mát již nastavený monit. Pokud ne, je to popsáno zde:
http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch
http://www.howtoforge.com/server_monitoring_with_munin_monit_fedora_7.

Ve zde uváděném příkladu chci monitorovat webový server (s webovou stránkou www.mywebsite.com) a chci mít přehled, jestli je stále v provozu nebo ne. Proto použijí monit na jiném serveru (monit.example.com) takže monit může poslat zprávu, pokud webserver selže z jakéhokoliv důvodu. (Pokud bychom instalovali monit na webserver a ten selhal, monit by nemohl odeslat jakoukoli zprávu)

SMS službu, kterou je možné využít je např. SMS77.de (pokud chcete využít tuto službu, musíte se registrovat a zaplatit nejméně 5 EUR a předplatit si tak svůj účet).
Jak je popsáno na http://www.sms77.de/email2sms.html (německy), e-mail,který pošleš do brány potřebuje mít následuící formát:

Subject: Text of the SMS
Text of the Mail: Email2SMS-Key#Recipient#SMS Type#Sender

Je možné specifikovat email2sms klíč.; příjemce je telefonní číslo Vašeho telefonu (pokud chcete poslat zprávu více příjemcům, oddělte telefonní čísla); sms stojí 3,5 cents (EUR cents). Zadání odesílatele je volitelné.

2 Konfigurace monitu

Otevřeme soubor /etc/monit/monitrc pro monit.example.com a na konec souboru vložíme následující:

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
}

Jak můžete vidět, v této konfiguraci monitu vyžadujeme soubor index.ph z Vaší www.mywebsite.com stránky a také budeme zkoušet pingnout na hosta www.mywebsite.com.
Ujistěme se, že monit nebude odesílat příliš mnoho falešných zpráv. Je třeba aby odesílal zprávu pouze pokud test selže v nějakém navazujícím období (např. ve čtyřech cyklech), protože pak to indikuje skutečný problém.

Zprávy budou odeslány na email-to-sms bránu, ale pouze pokud zde byla skutečná chyba (connection error,  timeout, ztracené pingy..)

Seznam událostí je zde: http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout
http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout.

Po dokončení konfigurace restartujeme monit:

/etc/init.d/monit restart

A je to 🙂