Как получать сообщения от Zabbix себе на телефон через SMS?
Регистрируемся у SMS провайдера, например мы будем использовать sms рассылки от RocketSMS.by.
1. Создаем скрипт например sms_gate.php в /usr/lib/zabbix/alertscripts или в папку которая указана в настройках zabbix_server.conf, переменная AlertScriptsPath.
<?php
if (count($argv)<3) {
die ("Usage: ".$argv[0]." recipientmobilenumber \"subject\" \"message\"\n");
}
$to = str_replace('+', '', trim($argv[1]));
$message = trim($argv[2]);
if ( $message == "" || !is_numeric($to) ) {
die("missing params!\n");
}
$message = [
"username" => "Логин",
"password" => md5("Пароль"),
"phone" => $to,
"text" => $message
];
$messageQuery = http_build_query($message);
curl_setopt($curl,CURLOPT_URL, 'http://api.rocketsms.by/simple/send');
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_POST, true);
curl_setopt($curl,CURLOPT_POSTFIELDS, $messageQuery);
$result = @json_decode(curl_exec($curl), true);
if($result && isset($result['id'])) {
echo"Message has been sent. MessageID=".$result['id'];
} elseif($result && isset($result['error'])) {
echo"Error occurred while sending message. ErrorID=".$result['error'];
} else {
echo"Service error";
}
?>
2. Установим права на выполнение скрипта.
chmod +x /usr/lib/zabbix/alertscripts/sms_gate.php
chown zabbix /usr/lib/zabbix/alertscripts/sms_gate.php
3. Проверим, что SMS сообщения отправляются
php /usr/lib/zabbix/alertscripts/sms_gate.php Номер телефона (Без всяких знаков + итд) "Test Message"
4. В Zabbix перейдите в Administration > Media Types и создайте новый Media type с типом Script и именем например SMSGate. В поле Script Name указываем наш скрипт sms_gate.php, а в Script parameters указываем следующие макросы {ALERT.SENDTO}, {ALERT.MESSAGE}.
5. Перейдите в Administration > Users, выберете пользователя, перейдите во вкладку Media. Нажмите Add, в поле Type выберете наш скрипт, а в поле Send to введите номер телефона.