Оповіщення про падіння сервера через SMS своїми руками
Після переїзду на інший сервер через криві налаштувань двічі виникла ситуація, при якій сайти оказвалісь в дауні, а я це помічав тільки через 10-12 годин. Така ситуація, звичайно, є неприпустимою, і, крім виправлення помилки, я задумався, як уникати таких довгих даунтайм. Логічне рішення - сповіщення по sms.
Отже, нам треба:
1. Сервіс відправки СМС з API-інтерфейсом
2. Будь-який хостинг, що дозволяє використовувати функцію fsockopen (95% хостингів це дозволяють), з якого ми будемо перевіряти наш сервер на доступність.
Я використовував сервіс sms16.ru. Одна СМСка у них коштує 50 коп, є api і купа іншого функціоналу, який нам не знадобиться. Регал, кидаємо на рахунок 20-30 руб (вистачить позаочі :)), йдемо в розділ API, качаємо простий приклад на PHP. Заходимо на свій хостинг, заливаємо приклад в файл, скажімо, send.php. Створюємо ще один файл, приблизно такого змісту:
Тут ми намагаємося підключитися до нашого сайту, якщо він відповідає протягом 5 секунд - значить все ок, далі ми нічого не робимо. Якщо він відповідає між 5 і 20 секундами - повідомлення буде інформувати нас про дуже повільну роботу сервера. Якщо ж сервер не відповідає більше 20 секунд - значить, він в дауні. В кінці ми відправляємо sms-ку, включаючи відповідний файл в скрипт з відповідним повідомленням.
У файлі send.php ми міняємо тільки шаблон xml:
Замість логіна і пароля можна використовувати xml-api-ключ, щоб не світити дані входу. Але тому що у мене там лежить 20 руб, нехай світяться, не страшно :)
Ось, в принципі, і все, треба тільки потестить вийшов результат, вбивши неіснуючий url в змінну $ url, вам повинна прийти смска з відповідним повідомленням.
Ах да, під кінець, треба вийшов скрипт додати в cron. Я налаштував запуск перевірки доступності сайту раз в півгодини.
Інструмент з безкоштовними повідомленнями є! Назиают Яндекс.Метрика!
Нормальний адмін використовує GSM-шлюз з COM1, великий адмін використовує VOIP-шлюз і змушує сервер дзвонити на свій стільниковий і ласкавим жіночим голосом будить по-вранці звітуючи скільки DDoS отfail2banіл і яке навантаження витримував =)