- e-mail2sms шлюз, предоставляемый оператором сотовой связи. Способ не очень надежный и не у всех операторов есть данный сервис.
- Использовать железный телефон, прикрученный к серверу мониторинга. Самый надежный и сложный способ.
- Научить thold отсылать сообщения через смс сервис.
Я выбрал третий способ. Причин тому несколько. Во-первых, сервер мониторинга “далеко” и нет физической возможности подключить аппаратный телефон. Во-вторых, одно из направлений моего бизнеса — смс сервис. Поэтому интересно расширить сервис и для работы с cacti. Сразу скажу, что такой способ не подойдет тем, кому нужна 100% работоспособность. Понятно, что если у сервера мониторинга пропадет выход в Интернет, то никаких сообщений вы не получите. Но для тех кого устроит и 99% метод хороший. Итак, приступим.
Для начала у нас должен быть установлен и настроен сам cacti и модуль thold. Настройка cacti не тема данной статьи, поэтому считаем, что все настроено и работает. Заходим в настройки cacti Console->Settings-> Thresholds и ставим галочку Send Alerts as Text, нам HTML код в сообщениях не нужен.
Далее у вас должен быть рабочий аккаунт на смс сервисе vesms.ru. Если нет, регистрируемся. После скачиваем PHP класс для работы с сервисом. Распаковываем и кладем файл VESMS.class.php в папку с модулем thold, обычно это /usr/local/share/cacti/plugins/thold.
Далее правим код файла /usr/local/share/cacti/plugins/thold /thold_functions.php. Ищем строку function thold_mail($to, $from, $subject, $message, $filename, $headers = ») {
Нам надо добавить в код этой функции работу с смс. Изначально код выглядит так
... function thold_mail($to, $from, $subject, $message, $filename, $headers = '') { global $config; thold_debug('Preparing to send email'); include_once($config['base_path'] . '/plugins/settings/include/mailer.php'); include_once($config['base_path'] . '/plugins/thold/setup.php'); $subject = trim($subject); $message = str_replace('<SUBJECT>', $subject, $message); ...
Меняем на
... function thold_mail($to, $from, $subject, $message, $filename, $headers = '') { global $config; thold_debug('Preparing to send email'); include_once($config['base_path'] . '/plugins/settings/include/mailer.php'); include_once($config['base_path'] . '/plugins/thold/setup.php'); require_once($config['base_path'] . '/plugins/thold/VESMS.class.php'); $subject = trim($subject); $message = str_replace('<SUBJECT>', $subject, $message); $user = 'USERNAME'; //API логин или логин пользователя в сервисе (по умолчанию адрес электронной почты) $key = 'APIKEY'; //API ключ, доступен по ссылке http://client.vesms.ru/settings/api $sms = new VESMS($user, $key); $recipients='NUMBER'; //номер на который отправляем сообщения $sender='cacti'; // имя отправителя, должно предварительно пройти модерацию, без модерации доступно только имя отправителя в виде номера пользователя используемого аккаунта $sms->messageSend($recipients, $subject, $sender); ...
На этом все. В такой конфигурации все e-mail сообщения будут дублироваться смс. В смс приходит только тема e-mail без самого тела письма. Этого более чем достаточно, вся необходимая информация там содержится.
В идеале конечно хочется отдельного модуля для смс с более гибкими параметрами настройки. Может и до такого дойдут руки. Но и в текущем варианте все отлично работает и позволяет быстро реагировать на нештатные ситуации.
ссылка на оригинал статьи http://habrahabr.ru/post/192250/
Добавить комментарий