Звонок-оповещение Zabbix через Asterisk на мобильный телефон
Меня однажды попросили настроить оповещение о некоторых событиях в zabbix в виде звонка на мобильный телефон с проговоркой определенного текста. Сам я в своей практике не сталкивался с ситуациями, когда нужно было бы именно звонить. Обычно хватает почты, смс или на худой конец telegram. Но раз просят, почему не настроить. Делается это довольно просто, и я сейчас расскажу как.
Введение
Мониторинг zabbix славится своей гибкостью. Я его люблю в основном за это. Можно придумать какой угодно функционал в скриптах и прикрепить его в виде триггера к заббиксу. То же самое можно делать с различными метриками, но сегодня мы будем говорить именно о триггерах.
Asterisk умеет совершать исходящие звонки на основе информации в так называемых call файлах. Ему достаточно положить в определенную папку файл, где будут указаны параметры звонка и он позвонит. Таким образом, наша задача по настройке оповещений в виде звонков на мобильный телефон сводится к созданию таких файлов на нужные нам события.
Мы можем позвонив, проговорить записанную ранее аудиозапись, либо прочитать текст из файла. Второй вариант более сложный, требует установку дополнительных программ, умеющих читать текст. Мне это было не нужно, так как набор фраз был ограниченный и его не сложно записать заранее. Так что у меня zabbix будет звонить через asterisk и говорить заранее подготовленные записи.
Первым делом мы напишем скрипт, который будет генерировать call файлы для asterisk и подготовим dialplan астериска для исходящих звонков через zabbix. А потом настроим выполнение этого скрипта по определенным событиям в мониторинге.
Все действия будут выполняться на серверах под управлением CentOS 7. Если у вас ничего нет и вы только думаете как настроить то, что я описал выше, приведу для вас все необходимые ссылки с описанием настройки всего, что понадобится:
Если вы предпочитаете систему Debian, то вот то же самое, только для нее:
Когда все готово, можно приступать к реализации задуманного.
Настройка оповещений через asterisk
Я не буду рассказывать о формате call файлов астериск. В интернете есть полная информация. Привожу сразу готовый скрипт с комментариями, который будет генерировать файл звонка. Этот скрипт должен располагаться на сервере с asterisk.
И на нем обязательно должен стоять zabbix-agent. Можно и без этого обойтись, генерировать call файл в любом месте и потом по сети тем или иным способом передавать на сервер с asterisk.
Но мне удобнее все делать сразу на астериске, так как у меня всегда все сервера под мониторингом.
Создадим директорию для скрипта, выставим на нее права и напишем скрипт для формирования call файла.
# mkdir /etc/zabbix/scripts && chown zabbix. /etc/zabbix/scripts # mcedit /etc/zabbix/scripts/make-call.sh#!/bin/bash callname=/etc/zabbix/scripts/zabbix-alert.call # Call-файл Asterisk echo “Channel: SIP/89659036455@num-mango” > $callname # Каким номером представляемся echo “Callerid: 101” >> $callname # Сколько раз звонить в случае неответа echo “MaxRetries: 2” >> $callname # Через сколько времени перезваниваем (сек) echo “RetryTime: 90” >> $callname # Сколько ждем ответа (сек) echo “WaitTime: 60” >> $callname # Контекс звонка в dialplan echo “Context: zabbix_alarm” >> $callname echo “Extension: s” >> $callname echo “Priority: 1” >> $callname cp $callname /var/spool/asterisk/outgoing/zabbix-alert.call rm -f $callname
89659036455 | Мобильный телефон, куда будем звонить |
num-mango | Имя транка для исходящих звонков |
zabbix_alarm | Имя контекста в dialplan, по которому выполняется звонок |
Мы создаем файл с нужными параметрами и копируем его в папку /var/spool/asterisk/outgoing. После этого asterisk сразу совершает звонок.
Теперь добавим указанный контекст в dialplan. Редактируем файл /etc/asterisk/extensions.conf
[zabbix_alarm] exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Background(yourcallisimportant) exten => s,n,hangup
В этом контексте мы снимаем трубку и говорим абоненту стандартную фразу из поставки астериска: «Ваш звонок очень важен для нас бла бла бла….» Поставил для теста ее, потому что она достаточно длинная. Удобно проверять функционал. Если у вас уже готовы ваши фразы, можете использовать сразу их.
В данном примере один скрипт и один контекст с одной фразой. Если вам нужно несколько разных фраз проговаривать на разные события, то создавайте на каждое такое событие отдельный скрипт, в нем отдельный контекст, а уже в контекстах указывайте разные фразы. Я все покажу на одном примере.
Перечитываем диалплан и можно тестировать. После запуска скрипта вручную, астериск должен вам позвонить и проговорить указанную фразу. Если этого нет, то разбирайтесь сразу на месте, дальше в zabbix лезть нет смысла. Сначала надо настроить звонок. Обратите внимание на права файлов.
Не забывайте, что скрипт будет исполняться от пользователя, под которым работает мониторинг. Скорее всего это zabbix. У него должны быть права для записи в папку /var/spool/asterisk/outgoing, иначе он не сможет создать call файл.
Я просто добавил права на запись в эту папку группе zabbix:
# chown root:zabbix /var/spool/asterisk/outgoing && chmod 0775 /var/spool/asterisk/outgoing
Еще раз обращаю внимание на права на папки, скрипты, файлы. Проверяйте их в первую очередь. Я несколько раз настраивал оповещения на мобильный и всегда спотыкался на этих моментах.
То на директорию со скриптами забуду добавить права на запись, не создавался временный файл, то в папку с астериском не хватало прав записать файл. При этом в логах нигде никаких ошибок я не видел.
Заббикс рапортовал об успешном выполнении внешнего скрипта, но при этом ничего не происходило.
Нам нужно разрешить выполнение внешних скриптов в zabbix-agent. Заодно включим их логирование. Для этого выставляем в файле конфигурации агента следующие параметры:
EnableRemoteCommands=1 LogRemoteCommands=1
Перезапускаем агента:
# systemctl restart zabbix-agent
На астериске настройку закончили. У нас все готово для совершения звонков по событиям.
Звонок на мобильный телефон по событию в zabbix
Настраиваем сам сервер мониторинга zabbix. Я для примера буду использовать следующее событие — будем звонить на мобильный телефон, когда количество ssh пользователей на сервере будет больше, чем 2. Эта метрика есть в стандартном шаблоне для серверов linux. Триггер создам для этого вручную. Открываем необходимый для теста хост и добавляем новый триггер.
В данном случае asterisk это имя сервера. Сервер может быть любым.
Прежде, чем двигаться дальше, убедитесь, что триггер корректно срабатывает. Я всегда рекомендую все действия выполнять по шагам и проверять работу на каждом шаге. Это существенно облегчает отладку ошибок, а без них редко получается сразу все настроить.
Дальше идем в раздел Configuration -> Actions и создаем новое действие с Event source в виде Triggers. Выбираем в качестве условия только что добавленный триггер.
Переходим на вкладку Operations и добавляем там новое действие в соответствии с нашей задачей.
Обращаю внимание, что вы можете привязаться к триггеру на любом сервере, а действие по оповещению в виде скрипта будет выполнено на сервере с астериском. Сохраняйте все данные и можно проверять.
Проверка работы оповещения на сотовый
Осталось проверить работу всей конструкции. Для этого заходим 3-мя пользователя по ssh на сервер asterisk и ждем звонка. При срабатывании триггера на дашборде будет следующая информация.
В это же время вам придет звонок на мобильник. Если не ответите на звонок, через 90 секунд позвонит еще раз. В логе агента заббикс появится следующая запись:
# cat /var/log/zabbix/zabbix_agentd.log 44152:20170407:175635.453 Executing command '/etc/zabbix/scripts/make-call.sh'
А в логе звонков астериск будет информация о совершенном звонке:
# cat /var/log/asterisk/cdr-csv/Master.csv “”,”101″,”s”,”zabbix_alarm”,””””” “,”SIP/num-mango-00007561″,””,”BackGround”,”yourcallisimportant”,”2017-04-07 14:58:15″,”2017-04-07 14:58:15″,”2017-04-07 14:58:20″,4,4,”ANSWERED”,”DOCUMENTATION”,”1491577085.45519″,””
Если все сделали правильно, у вас будет примерно то же самое. Статью написал по рабочему примеру, который во время написания настроил. Реализовать подобные оповещения можно по-разному, но принцип будет тот же самый — формирование call файла и создание необходимого action. Создавать call файлы и настраивать action можно различными способами.
Помогла статья? Есть возможность отблагодарить автора
Источник: https://serveradmin.ru/zvonok-opoveshhenie-zabbix-cherez-asterisk-na-mobilnyiy-telefon/
Оповещения Zabbix по телефону через Asterisk
Однажды ночью на станции отключились кондиционеры и начала подниматься температура, естественно мне пришли email уведомления на телефон, но так как была ночь, увидел я их только утром, поэтому понадобилось для таких экстренных случаев быстро сделать возможность уведомлений звонком на телефон.
Наведу пример варианта оповещений Zabbix используя телефонный вызов через Asterisk.
У Asterisk должен быть загружен модуль, для этого откроем файл конфигурации модулей, например в редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):
sudo nano /etc/asterisk/modules.conf
И проверим есть ли cтрока, если нет — добавим:
load => pbx_spool.so
А также подгрузим его в данный момент:
sudo asterisk -rvv module load pbx_spool quit
В моем случае Zabbix и Asterisk находятся на разных серверах.
На сервере с Asterisk я написал русский текст уведомления в текстовый файл high_temperature.txt которое должно воспроизвестись при звонке.
Установил festival, русский мужской голос чтобы конвертировать текст в звуковой файл и rsync чтобы копировать файл звонка на сервер Asterisk:
sudo apt-get install festival festvox-ru rsync
Собственно команда конвертации текста в звуковой файл:
text2wave -eval '(voice_msu_ru_nsh_clunits)' < high_temperature.txt > high_temperature.wav
Далее конвертировал формат файла wav в ulaw, так как у меня используется он:
sox -V high_temperature.wav -r 8000 -c 1 -t ul high_temperature.ulaw
И переместил готовый звуковой файл в директорию со звуковыми файлами Asterisk:
sudo mv high_temperature.ulaw /usr/share/asterisk/sounds/ru_RU/high_temperature.ulaw
Смотрите также мою статью — Как конвертировать звуковые файлы в ulaw, alaw, gsm, g722 и т.д. для Asterisk
На сервере с Zabbix используя текстовый редактор nano я создал файл:
sudo nano /etc/zabbix/zabbix.call
И добавил в него содержимое (где 0670000000 номер телефона на который нужно звонить, а цифра 4 это номер канала Goip4 GSM шлюза с которого будет совершен звонок):
Channel: SIP/goip4/40670000000 Application: Playback Data: high_temperature MaxRetries: 10 RetryTime: 60 WaitTime: 30
На файл я установил права 777 чтобы разрешить доступ всем, пользователь zabbix будет его копировать, а на другом сервере пользователь asterisk прочитает и удалит после звонка:
sudo chmod 777 /etc/zabbix/zabbix.call
Также нужно создать сам файл скрипта, который будет выполнять Zabbix (я создал в директорий со скриптами zabbix/alert.d/asterisk_call.sh):
rsync -avh -e “ssh -p 22” /etc/zabbix/zabbix.call [email protected]:/var/spool/asterisk/outgoing/zabbix.call
Скрипт просто копирует файл zabbix.call на сервер с Asterisk в директорию /var/spool/asterisk/outgoing/, после попадания в которую, Asterisk сразу обрабатывает его и совершает звонок.
По сути скрипту можно передавать номер звонящего и составлять файл zabbix.call, но мне это не нужно было.
Если Asterisk и Zabbix на одном сервере, то строку в скрипте заменим на:
cp /etc/zabbix/zabbix.call /var/spool/asterisk/outgoing/zabbix.call
Или:
rsync -avh /etc/zabbix/zabbix.call /var/spool/asterisk/outgoing/zabbix.call
Чтобы rsync выполнял копирование без запроса пароля, нужно сгенерировать SSH ключ и скопировать его на сервер Astersik, как это делать я описывал в этой статье — Подключение к SSH с использованием ключей
Если доступ к серверу по SSH предоставляется пользователю root, то в целях безопасности можно ограничить доступ по IP средствами SSH:
sudo nano /etc/ssh/sshd_config AllowUsers user1 user2 [email protected] sudo service ssh restart
Если проблемы с правами на сервере с Zabbix, например при копировании call файла, можно в файле конфигурации /etc/zabbix/zabbix_server.conf указать следующий параметр:
AllowRoot=1
Осталось добавить новый тип оповещения в панели Zabbix («Администрирование» — «Способы оповещений»). Далее создал новую группу узлов и добавил устройство для которого отрабатывает триггер о высокой температуре. Создал отдельного пользователя, указал ему созданный тип оповещения и добавил в созданную группу узлов.
Также добавил действие в «Настройка» — «Действия» указав отправку сообщений через скрипт.
Источник: https://ixnfo.com/opoveshheniya-zabbix-po-telefonu-cherez-asterisk.html
Оповещение о проблемах Zabbix по телефону через Asterisk
Замечательная система мониторинга Zabbix предлагает «из коробки» несколько способов оповещения администратора о возникших проблемах: e-mail, SMS и Jabber.
В этом топике я расскажу вам как подружить Zabbix и офисную АТС на основе Asterisk. Когда произойдет нештатная ситуация вам позвонит робот и проговорит сообщение с описанием проблемы.
Зачем это нужно
Оповещения по e-mail неплохо работают, когда их мало. При большом количестве писем возникает вероятность пропустить критическую ошибку. Поэтому логично настроить на e-mail оповещения по всем уровням проблем, а на SMS — только самые критичные.
Но, к сожалению, не у всех коллег администраторов есть бюджет на покупку GMS-модема и оплату SMS. Отсылка SMS через онлайн сервисы не надежна, т.к. у нас может упасть канал в Интернет. А оповещение через свою АТС будет бесплатным. Вы сможете настроить звонок на внутренний номер в офисе, группу абонентов или на мобильный.
Если АТС подключена к физической телефонной линии, то падение канала в Интернет ей будет не страшно.
Как это работает
В сети я нашел па ру примеров скриптов для решения этой задачи. Однако оба они обладают существенными недостатками: используют PHP (зачем?) и не умеют зачитывать текст сообщения — только стандартное сообщение, что есть какая-то проблема.
Наш скрипт будет работать так:
- при возникновении alert Заббикс запускает bash-скрипт;
- bash-скрипт готовит call-файл для Asterisk и сообщение об ошибке в текстовом виде;
- файлы пересылаются по SCP на сервер Asterisk;
- по SSH на Asterisk запускается text2wave, зачитывающий текст в wav-файл;
- wav-файл и call-файл копируются в соответствующие папки Asterisk;
- Asterisk видит файлы, совершает звонок и проигрывает сообщение.
Весь процесс занимает всего 1-2 секунды.
Скрипт
Заббикс умеет запускать скрипты при возникновении проблем. Скрипты лежат в папке, указанной в переменной AlertScriptsPath серверного конфига Заббикс.
Как и все такие скрипты, наш скрипт должен принимать 3 параметра: адресат, тема сообщения, текст сообщения.
#!/bin/bash
# Asterisk сервер
server=”[email protected]” # Уникальная метка
ts=$(date +%s%N) # Создаем два файла
txtname=/tmp/zabbix-alert.$ts.txt
callname=/tmp/zabbix-alert.$ts.call # Наговариваемый текст. # Приветствие. Запятые для паузы.
echo “Zabbix alert,,,,,,,,,,,,,,,,,” > $txtname
# $2 – subject триггера. Можно поставить $3 – сообщение.
echo “$2” >> $txtname # Call-файл Asterisk
echo “Channel: Local/$1@from-internal” > $callname
echo “Extension: s” >> $callname
echo “MaxRetries: 2” >> $callname
echo “RetryTime: 60” >> $callname
echo “WaitTime: 30” >> $callname
# С какого номера звоним
echo “Callerid: 999” >> $callname
echo “Application: Playback” >> $callname
# Повторяем 3 раза
echo “Data: zabbix-alert.$ts&zabbix-alert.$ts&zabbix-alert.$ts” >> $callname scp $txtname $server:$txtname
scp $callname $server:$callname
rm -f $txtname
rm -f $callname
ssh $server “cat $txtname | /usr/bin/text2wave -F 8000 > /var/lib/asterisk/sounds/zabbix-alert.$ts.wav && mv $callname /var/spool/asterisk/outgoing/ && rm -f $txtname && find /var/lib/asterisk/sounds/ -name 'zabbix-alert*' -type f -mmin +10 -delete”
Настраиваем серверы
Тут все зависит от используемой вами ОС/дистрибутива, поэтому 100% точных рекомендаций дать не могу.
Если вкратце, во-первых, нам нужно на Asterisk установить программу text2wave (пакет Festival), по желанию установить русский голос.
Во-вторых, нужно настроить беспарольную SSH аутентификацию между Zabbix и Asterisk.
Можно воспользоваться этой инструкцией (пп. 1-6). Ключ придется сделать без passphrase. Вы можете настроить аутентификацию как для пользователей, под которыми работают Zabbix и Asterisk, так и завести других, но во втором случае в скрипте надо будет использовать sudo.
Также проследите, чтобы у Asterisk были все права на создаваемый call-файл.
Если нужно, заведите отдельный extension, с которого будет происходить звонок.
После того, как все настроено, можно проверить работу скрипта запустив его из консоли:
./call_sip.sh номер “текст” “”
Если не получается, ковыряем логи Zabbix, ssh и Asterisk. Я большую часть времени потратил как на раз на настройку sudo и ssh.
Настраиваем Zabbix
Самое простое: В Administration — Media types создаем новый тип оповещения.
У нужных пользователей (Administration — Users) в закладке Media указываем их телефон. Это может быть как внутренний номер, так и мобильный — в соответствие с планом набора вашей АТС.
В Actions редактируем или создаем новое действие, указав оповещаемых пользователей. Я рекомендую заголовок сообщения установить в {TRIGGER.STATUS} {TRIGGER.NAME} {HOSTNAME}, чтобы было понятно на какой машине произошла беда.
Итого
Мы получили еще один канал оповещения администраторов в дополнение к e-mail и SMS.
Источник: http://www.pvsm.ru/sip/37069
Подключаем к Asterisk мобильный телефон
Для тех, кто много ездит по миру, вполне может пригодится возможность совершать звонки родным по тарифам вашего мобильного оператора.
Для этого нужен небольшой домашний сервер (у многих людей нашей профессии он есть) и установленный Asterisk с подключеным мобильным телефоном.
Об этом и поговорим.
Итак, у нас есть сервер с Ubuntu 14.04, bluetooth dongle, и старый мобильный телефон типа Nokia 6300. Сразу устанавливаем все необходимое:
$ sudo apt-get update && sudo apt-get install asterisk asterisk-mobile bluez-utils bluez-hcidump libbluetooth-dev python-gobject-2 python-dbus
Теперь необходимо соединить телефон с нашим сервером. Посмотрим MAC адрес нашего донгла:
$ sudo hcitool dev
Devices:
hci0 00:15:83:3D:1A:57
Пробуем установить связь. Для этого нам понадобится небольшой скрипт:
$ pushd /tmp
$ wget https://raw.githubusercontent.com/DmitriyLyalyuev/simple-agent/master/simple-agent.py
$ chmod +x /tmp/simple-agent.py
$ hcitool scan
Scanning … 00:11:22:33:44:55 Nokia 6300
Мы нашли MAC адрес нашего телефона. Теперь нужно его подключить.
$ sudo /tmp/simple-agent.py hci0 00:11:22:33:44:55
RequestPinCode (/org/bluez/22380/hci1/dev_00_11_22_33_44_55)
Enter PIN Code: 4567
Release
New device (/org/bluez/22380/hci1/dev_00_11_22_33_44_55)
Если все прошло именно так, как описано выше, то настраиваем Asterisk:
/etc/asterisk/chan_mobile.conf:
[Adapter]
address = 00:15:83:3D:1A:57
id = Dongle
Перегружаем asterisk и ищем наш телефон:
$ sudo service asterisk reload
$ sudo rasterisk
asterisk*CLI> mobile search
Address Name Usable Type Port
00:11:22:33:44:55 Mokia 6300 Yes Phone 13 asterisk*CLI> module unload chan_mobile
asterisk*CLI> exit
Теперь у нас есть вся информация о телефоне и мы можем его вписать в конфигурацию.
/etc/asterisk/chan_mobile.conf:
[Adapter]
address = 00:15:83:3D:1A:57
id = Dongle [Nokia]
address = 00:11:22:33:44:55
port = 13
context = from-phone
adapter = Dongle
Возврщаемся в консоль asterisk'a и загружаем модуль:
$ sudo rasterisk
asterisk*CLI> module load chan_mobile
asterisk*CLI> mobile show devices ID Address Group Adapter Connected State SMS
Nokia 00:11:22:33:44:55 0 Dongle Yes Free Yes
asterisk*CLI> exit
В итоге мы соединили наши устройства и Asterisk готов совершать вызовы через этот телефон.
Осталось настроить пользователей и планы звонков.
/etc/asterisk/sip.conf:
[internal](!)
type=friend
host=dynamic
context=home
dtmfmode=rfc2833
canreinvite=no [200](internal)
secret=Password
callerid='Username'
/etc/asterisk/extensions.conf:
[from-phone]
exten => s,1,Answer
exten => s,n,Dial(SIP/200)
exten => s,n,Hangup() [home]
exten => _.,1,Dial(MOBILE/Nokia/${EXTEN})
exten => _.,n,Hangup()
Перечитываем конфиги и пробуем звонить.
$ sudo service asterisk reload
Исходящие звонки будут идти через телефон. Поступивший звонок на телефон будет переадресован на внутренний номер 200.
Осталось установить любой VoIP клиент на ноутбук или смартфон и звонить через интернет своим родным.
И не забудьте про правильные пароли, а то много ботов пытается подбирать пароль к пользователям asterisk'a. А еще лучше уставновите fail2ban для защиты от перебора пароля.
Источник: https://lyalyuev.info/2014/10/03/podkliuchaem-k-asterisk-mobil-nyi-telefon/
Нотификация/оповещение из Nagios через Asterisk
Эта статья о том как подключить Nagios к Asterisk
Для чего всё это надо? Идея состоит в том, чтобы получать автоматичские уведомления на телефон при срабатывании пробников.
Итак, приступаем.
Создадим темплейт контакта:
…define contact{name contact-by-sip ; The name of this contact templateservice_notification_period 24×7 ; service notifications can be sent anytimehost_notification_period 24×7 ; host notifications can be sent anytimeservice_notification_options c ; criticalhost_notification_options d ; downservice_notification_commands notify-service-by-sip ; send service notifications via siphost_notification_commands notify-host-by-sip ; send host notifications via sipregister 0 ; ITS NOT A REAL CONTACT, JUST A TEMPLATE!}… |
И сам контакт:
define contact{contact_name nagios-sipuse contact-by-sipalias Nagios Sipemail Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.address2 SIP/37327@cucm1} |
Команда нотификации:
define command{command_name notify-host-by-sipcommand_line $USER1$/notify-by-sip.sh $CONTACTADDRESS2$ “HOST” $NOTIFICATIONTYPE$ $HOSTNAME$ H_$HOSTEVENTID$}define command{command_name notify-service-by-sipcommand_line $USER1$/notify-by-sip.sh $CONTACTADDRESS2$ “SERVICE” $NOTIFICATIONTYPE$ $HOSTALIAS$ S_$SERVICEEVENTID$} |
И описание сервиса:
define service{use my_graph-service-template-1minhost_name test.ruservice_description PINGcheck_command check_ping!200.0,20%!500.0,60%contacts nagios-sipmax_check_attempts 5} |
Исходящий вызов будем совершать с использованием так называемых “.call” файлов. Это текстовые файлы, которые надо поместить в директорию outgoing на сервере астериска, которая в настройках Asterisk прописана так чтобы совершить исходящий вызов автоматически. Однако настройка asterisk не тема этой статьи.
Пример скрипта, генерирующего файл .call приведен ниже. Также приведен пример экстена (exten) для Asterisk.
#!/bin/bashchannel=$1alarm_hs=$2alarm_type=$3alarm_hostname=$4alarm_id=$5mytmpfile=`mktemp /tmp/nagios_call/nagios_$alarm_id.XXXX`mytmpfile=$mytmpfile.”call”file_name_only=`echo $mytmpfile | sed -e 's/.*///g'`CDR=`echo $channel | sed -e 's/.*///g' | sed -e 's/@.*$//g'`if [ “$alarm_type” = “ACKNOWLEDGEMENT” ]thenecho `date` >> /tmp/nagios_call/logging.txtecho “$alarm_hs, $alarm_type, $alarm_hostname” >> /tmp/nagios_call/logging.txtexit 0fiif [ “$alarm_hs” = “SERVICE” ]thendata_wav=”otkaz_servisa_na_servere”fiif [ “$alarm_hs” = “HOST” ]thendata_wav=”otkaz_servera”fiecho “Channel: $channelCallerID: ALARMMaxRetries: 5RetryTime: 10WaitTime: 23Account: callback_nagiosContext: callback_nagiosExtension: 911Priority: 2Set: file=$data_wav&$alarm_hostnameAlwaysDelete: YesArchive: Yes” > $mytmpfilehost=”ip address”port=”21″user=”nagios”pass=”passsword”file=”$mytmpfile”ufile=”//$file_name_only”echo “put $file $ufile” >> /tmp/nagios_call/test_script.txtecho `date` >> /tmp/nagios_call/logging.txtecho “$alarm_type” >> /tmp/nagios_call/logging.txtecho “verboseopen $hostuser $user $passbinput $file $ufilebye” | ftp -n >>/tmp/nagios_call/logging.txt 2>&1 & |
В Asterisk примерно следующее:
[callback_nagios]exten => 911,1,Answerexten => 911,2,Playback(/var/spool/alarm/${file})exten => 911,3,Hangup |
Другая статья о настройке системы оповещения Nagios через Asterisk
Обновлено 06.04.2016 21:53
Источник: http://unix-way.ru/index.php/nastrojka-sistem-monitoringa/notifikatsiya-opoveshchenie-iz-nagios-cherez-asterisk
Оповещения Zabbix через Telegram
Вы хотите получать уведомления с Zabbix через Telegram? Нет ничего проще!
Есть для этого готовый бот и Telegram API
Бот присылает все, что было в специальном HTTP GET запросе вида:
http://crierbot.appspot.com/@token@/send?message=@message@
TOKEN — токен выданный ботом при его добавлении в список контактов Telegram
MESSAGE — собственно сообщение, которые хотите передать.
Итак, давайте разбираться, что нам для этого надо и что мы получим в итоге.
Добавление бота
Для начала добавляем себе в Telegram бота @crierbot и нажимаем START
После нажатия на STARTбот пришлет нам уникальный ключ «Token»
Ну вот и все. На этом наше общение с ботом окончено. Теперь только он нам будет писать то, что нам необходимо.
Настройка Zabbix Telegram
Zabbix умеет отправлять оповещения, используя скрипт. Zabbix отправляет 3 параметра: получатель, тема сообщения, текст сообщения.
Создание скрипта
Давайте напишем скрипт, который и будет передавать нам информацию из Zabbix нашему боту, который в свою очередь будет передавать ее нам:
#!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null “http://crierbot.appspot.com/$1/send?message=Subj: $2 || Message:$3”
Где $1, $2, $3 переданные Zabbix’ом параметры: получатель, тема сообщения, сообщение.
Данный скрипт сохраняем с произвольным именем, например. telegram.sh в директорию Zabbix’а, где хранятся скрипты уведомлений (в Freebsd по умолчанию это директория:
/usr/local/zabbix32/zabbix/alertscripts/ — (Для версии 3.2)
Делаем наш скрипт исполняемым:
chmod +x /usr/local/zabbix32/zabbix/alertscripts/telegram.sh
Выдаем zabbix права на этот скрипт:
chown zabbix:zabbix /usr/local/zabbix32/zabbix/alertscripts/telegram.sh
Настройка способа оповещения через telegram
Теперь переходим в веб-интерфейс Zabbix’а и переходим по Меню: «Администрирование» -> «Способы оповещения» и нажимаем «Создать способ оповещения»
Тут заполняем:
Имя — Произвольное
Тип — Скрипт
Имя скрипта — так, как вы назвали скрипт при его создании
Параметры срипта:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
(Это как раз и есть наши $1, $2 и $3)
И ставим галочку «Активировано»
И нажимаем Добавить (у меня обновить, так как он уже создан у меня)
Добавление способа оповещения пользователю
Далее заходим в «Администрирование» -> «Пользователи«. Выбираем нашего пользователя и переходим на вкладку «Оповещения» и нажимаем «Добавить»
В появившемся окне выбираем тип — под каким именем мы создали действие, вставляем наш токен, который выдал нам бот и нажимаем «Добавить»
После этого у пользователя в Оповещениях появится новый способ оповещения. Нажимаем «Обновить«.
Теперь нам осталось только создать действий, по которому нам будет приходить какое-либо сообщение.
Настройка действий
Итак, приступим к созданию действия. Для этого переходим в «Настройка» -> «Действия«. Справа вверху где «Источник событий» выбираем» Триггеры. Нажимаем «Создать действие«.
Действие:
Имя — Пишем любое понятное для нас имя
Условие — Настраиваем условие, при котором будет происходит наше действие (ниже я приведу пример 1 из своих действий)
Операции:
Выбираем что будет присылаться нам во время срабатывание нашего условия
В операциях нажимаем Новый и добавляем наш способ оповещения:
Должно получиться что то типа вот этого.
На вкдадке Операции восстановления Выбираем в операциях «оповещение о восстановлении», чтобы знать, что проблема ушла.
И нажимаем «Добавить«. В принцип на этом этапе мы уже все настроили!
Заключение
Вот пример одного из моих действий. У меня есть триггер на температуру CPU моего NAS. Его я и использовал:
Вот что мы в принципе видим в окне самого Telegram:
Собственно ничего сложного нет. Это настроить гораздо быстрее чем все это прочитать или тем более все это написать. Если возникнут трудности — пишите в комментарии. Постараюсь помочь.
Источник: https://sysadmin-note.ru/opoveshheniya-zabbix-cherez-telegram/
Zabbix оповещения на jabber
Сейчас будем разбираться с оповещениями zabbix на jabber. В ранних статьях мы уже устанавливали jabber сервер Openfire и будем использовать его на примере.
Для начала, в opebfire необходимо создать пользователя для zabbix сервера с которого будем отправлять сообщения и добавляем его в группу.
С коробки zabbix я не смог отправлять оповещения, поэтому будем использовать скрипт.
создаем файл jabber в /etc/zabbix/alert.d:
nano /etc/zabbix/alert.d/jabber#!/usr/bin/perl use common::sense;
use Net::XMPP; use constant {
SERVER => 'jabber.domain.ru',
PORT => 5222,
USER => 'server',
PASSWORD => 'password',
RESOURCE => 'company',
TLS => 0,
DEBUG => 0,
}; $0 =~ s{.*/}{};
my ($to, $subj, $body, $type) = @ARGV;
$type ||= 'headline'; die DEBUG ); $bot->SetCallBacks(
onconnect => sub{},
onauth => sub{
$bot->PresenceSend;
$bot->MessageSend( to => $to, subject => $subj, body => $body, type => $type );
$bot->Disconnect();
},
ondisconnect => sub{}
);
$bot->Execute(
hostname => SERVER,
port => PORT,
tls => TLS,
username => USER,
password => PASSWORD,
resource => RESOURCE,
register => 0,
connectiontype => 'tcpip'
);
Делаем его запускающимся:
chmod +x /etc/zabbix/alert.d/jabbercd /etc/zabbix/alert.d
Пробуем запустить:
./jabber
Получаем вот такую ошибку, а все из-за того что скрипт использует модули perl common::sense; Net::XMPP;
Can't locate common/sense.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at ./jabber line 3.
BEGIN failed–compilation aborted at ./jabber line 3.
perl -MCPAN -e 'install +common::sense'perl -MCPAN -e 'install +Net::XMPP'
Пробуем отправить сообщение с помощью скрипта:
./jabber [email protected] test test
сообщения также не доходят (тишина).
Добавлено из комментарий (спасибо Андрею):
Необходимо найти и закомментировать строку в
/usr/local/share/perl/5.14.2/Net/XMPP/Protocol.pm
return $self->AuthSASL (%args);
Кстати, в скрипте можно включить debug для просмотра где у нас ошибка:
DEBUG => 1,
Так же смотрим логи openfire в /var/log/openfire/warn.log
Важный момент:
Если у вас Openfire заведен на поддомене, например jabber.domain.ru, то и отправлять сообщения пользователю нужно с указанием с доменом третьего уровня:
./jabber [email protected] test test
Теперь остается в Вебморде zabbix добавить скрипт:
Администрирование -> Типы средств передачи -> Jabber — где Тип: выбрать Сценарий, Название скрипта — jabber
Источник: https://dyrik.ru/linux/zabbix-opoveshheniya-na-jabber.html
Оповещения Zabbix через sms используя GSM модем. Простая настройка
9 ноября 2015 в 16:21 (МСК) | сохранено9 ноября 2015 в 21:07 (МСК)<\p>Zabbix сервер — это хорошо. Правильно настроенный, он мониторит серваки и необходимые мне узлы. В случае проблем на них он с радостью уведомляет меня по электронной почте.
Не так давно выяснилось, что оба наших любимых провайдера (основной и резервный интернет каналы) решили не обеспечивать ИБП свое сетевое оборудование в здании.
Поэтому когда вырубают электричество (а бывает такое!) Zabbix бы и рад разбудить веселым письмом, а никак! В общем, решил заморочиться уведомлением по sms. Именно через GSM модем чтобы не было зависимости от интернета.
Поискав по интернету варианты отправки sms Zabbix-ом, нашел варианты решения, но они показались мне длинными. Поэтому сделал по своему «на коленке». Постараюсь подробно описать не сложное рабочее решение и «грабли».
Итак, что у меня было:
- Zabbix 2.4 на OC Debian 7 — мониторит несколько серваков, к одному из них подключен через USB кабель APC smart ups 3000. Мониторинг состояния UPS настроен по этой статье.
- GSM модем Huawei e1550 (Мегафон) который валялся дома со времен отсутствия проводного интернета. Как показала практика — вставив в уже настроенную систему другой модем Huawei все так же работает, не требуя перенастройки!
Для отправки из терминала sms я использовал gnokii.
Поехали:
# apt-get install gnokiiВставляем GSM модем в сервак и проверяем:# lsusbСреди прочего видим что-то типа:Bus 001 Device 009: ID 12d1:14ac Huawei Technologies Co., Ltd.Проверяем определился ли как модем:# ls /dev/ttyUSB*Если пусто (а меня было пусто):# apt-get install usb-modeswitchВытаскиваем и заново вставляем модем. Проверяем определился ли:# ls /dev/ttyUSB*Видим что-то типа:/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
Осталось чуть-чуть до первой отправки sms!
Создаем конфиг gnokii. Я положил его в /home# nano /home/user/sms.
conf
Текст конфига[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200
Сохраняем и тестируем:# echo “text” | gnokii –config /home/user/sms.
conf –sendsms +7ХХХХХХХХХХ(+7ХХХХХХХХХХ — тут, конечно, номер, на который надо отправить)
Должна прийти sms без проблем. Обо всем этом есть много инструкций на просторах интернета и до этого момента проблем у меня не возникло.
Дальше важно!
Заббикс в системе работает от пользователя zabbix. Разрешаем ему использовать модем.# nano /etc/group
dialout:x:20:zabbixИначе при отправке от этого пользователя получим что-то типа:
GNOKII Version 0.6.30 Gnokii serial_open: open: Permission denied Couldn't open ATBUS device: Permission denied Telephone interface init failed: Command failed. Quitting.
Command failed.
Еще при отправке встречал ошибку:
Cannot open logfile ./gnokii-errors
WARNING: cannot open logfile, logs will be directed to stderr
Это значит не нашлось файла по пути:~/.cache/gnokii/gnokii-errorsИзменяем разрешения для пользователя использовать sudo без пароля:# nano /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: /usr/bin/gnokiiДальше логинимся под пользователем zabbix и пишем очень простой скрипт.
nano /home/user/smsscriptТекст скрипта#!/bin/sh zabbixesmsto=$1 zabbixsubject=$2 echo “$zabbixsubject” | /usr/bin/sudo /usr/bin/gnokii –config /home/user/sms.conf –sendsms “$zabbixesmsto”Сохраняем.
Именно /usr/bin/sudo и /usr/bin/gnokii — для меня это оказалось важно! Не забываем от рута сделать:# chmod +x /home/user/smsscriptПроверяем работу скрипта:/home/user/smsscript +7XXXXXXXXXX test
Если пришла sms — все практически готово! Осталось прикрутить к Zabbix-у. Если не пришла, то проверяем, все ли сделали так как написано выше.
Я создавал скрипт для заббикса в /home/user/ потому что в конфиге zabbix_server.conf написно: AlertScriptsPath=/home/user/ Если у вас не так, то либо меняем расположение скрипта, либо изменяем в конфиге путь на /home/user/ — не забыть рестаратнуть zabbix server! В интерфейсе заббикса идем в Администрирование — Способы оповещений.
Создать способ оповещения.Затем настраиваем оповещение для вашего пользователя в заббиксе. Администрирование — Пользователи.И Настройка — Действия.Действие я сделал отдельное, чтобы sms приходили не по каждому поводу, а только при срабатывании определеных триггеров.
Так как при отпавке в sms пишется только тема, то в само сообщение нет смысла что-то писать. А в условие добавил:Вот и все! Дернул из разетки ИПБ и через несколько минут получил гневное sms от заббикса! Теперь он меня везде достанет, зараза!
P.S.: Так как электричество отключают не часто, то и расходов на sms совсем мало.
Источник: https://sohabr.net/habr/post/270497/
Настройка Zabbix для мониторинга SIP транков в Астериск
Актуальность статьи: 2017год Версия Zabbix 3.2 Версия Астериск: Asterisk 11.20.
0 built by palosanto Версия Linux: CentOS7 (дистрибутив Elastix)
- Zabbix будет самостоятельно находить транки на сервере Астериск
- Для каждого найденого транка будет автоматически создан Элемент данных
- Будет автоматически созданы Триггеры для оповещения
Будем мониторить состояние транка. Триггер сработает, если состояние не Registered Будем мониторить сервер SIP провайдера. Делать ping, замерять потери (icmpping в Zabbix)
Создадим папку для пользовательских скриптов в каталоге zabbix:
mkdir /etc/zabbix/scripts
Создаем скрипт asterisk_trunk_discovery.sh
touch /etc/zabbix/scripts/asterisk_trunk_discovery.sh
Содержимое скрипта
#!/bin/bash fun_error1(){ echo “Ошибка! Отсутствуют параметры (trunks или ips или registration_monitoring)” } fun_error2(){ echo “Ошибка! Отсутствуют параметры (название_транка)” } if [ $# -ne 0 ] then case $1 in trunks) /usr/bin/sudo asterisk -rx “sip show registry” | sed -e 1d -e '$d' | awk -v ORS=”” 'BEGIN { print “{“data”:[“} { print “{“{#TRUNKNAME}”:””$3″”},” } END { print “]}” }' | sed 's/,]}$/]}
/' ;; ips) /usr/bin/sudo asterisk -rx “sip show registry” | sed -e 1d -e '$d' | awk ' BEGIN { print “{“data”:[” } !seen[$1]++ { gsub(/:.+/, “”, $1); print “{“{#TRUNKIP}”:””$1″”},” } END { print “]}” }' | tr -d '
' | sed 's/,]}$/]}
/' ;; registration_monitoring) if [ $# -eq 2 ] then /usr/bin/sudo asterisk -rx “sip show registry” |grep -w $2 | awk '{print $5}' else fun_error2 fi ;; *) fun_error1 ;; esac else fun_error1 fi
Ставим права доступа
chown zabbix.zabbix /etc/zabbix/scripts/asterisk_trunk_discovery.sh chmod 500 /etc/zabbix/scripts/asterisk_trunk_discovery.sh
Разрешаем пользователю zabbix, от имени которого будет работать скрипт, запускать asterisk. Команда ниже добавляет в файл /etc/sudoers в самый конец нужную строку:
echo -ne ”
zabbix ALL = NOPASSWD: /usr/sbin/asterisk
” >> /etc/sudoers
В файл zabbix_agentd.conf добавляем строку
UserParameter=asterisk_trunk_discovery[*],/etc/zabbix/scripts/asterisk_trunk_discovery.sh $1
И перезапускаем zabbiz агент (для CentOS 7 даем такую команду)
systemctl restart zabbix-agent
3. Настройки на Zabbix сервере (в Web интерфейсе Zabbix)
Будем использовать Низкоуровневое Обнаружение. Создадим Шаблон, два Правила обнаружения, Прототипы элементов данных и Прототипы триггеров.
3.1. Создаем шаблон с именем Asterisk Trunks Discovery
3.2. Создаем первое Правило обнаружения
Шаблоны-> Asterisk Trunks Discovery->Правила Обнаружения->Создать правило обнаружения
Имя Правила обнаружения – любое. Ключ: asterisk_trunk_discovery[trunks]
Создаем Прототип элементов данных. Имя любое. Ключ: asterisk_trunk_discovery[registration_monitoring {#TRUNKNAME}]. Тип информации: Текст
Создаем Прототип триггера. Имя: Транк {#TRUNKNAME}. Выражение: {Asterisk Trunks Discovery:asterisk_trunk_discovery[registration_monitoring {#TRUNKNAME}].str(Registered)}1
3.3. Создаем второе Правило обнаружения
Имя Правила обнаружения – любое. Ключ: asterisk_trunk_discovery[ips]
Создаем три Прототипа элемента данных. Имя любое. Тип: Простая проверка. Ключи (по одному на каждый):
- icmpping[{#TRUNKIP}]
- icmppingsec[{#TRUNKIP}]
- icmppingloss[{#TRUNKIP}]
Создаем Прототипы Триггеров к этим Прототипам элементов данных (по своему вкусу)
3.4. Применяем шаблон к узлу сети
3.5. Любуемся результатом 🙂
4. Заключение
В заключение статьи даю поясления к командам из скрипта
/usr/bin/sudo asterisk -rx “sip show registry” | sed -e 1d -e '$d' | awk -v ORS=”” 'BEGIN { print “{“data”:[” } { print “{“{#TRUNKNAME}”:””$3″”},” } END { print “]}” }' | sed 's/,]}$/]}
/'
– asterisk -rx “sip show registry” – показывает зарегистрированные на Астериске транки
– sed -e 1d -e '$d' – удаляет первую и последнюю строку
– awk -v ORS=”” 'BEGIN { print “{“data”:[” } { print “{“{#TRUNKNAME}”:””$3″”},” } END { print “]}” }' – формируем строку в JSON формате
– sed 's/,]}$/]}
/' – удаляем последнюю запятую из строки в JSON формате и добавляем новую строку для удобства чтения. (заменяет в конце строки ,]} на ]}
)
/usr/bin/sudo asterisk -rx “sip show registry” | sed -e 1d -e '$d' | awk ' BEGIN { print “{“data”:[” } !seen[$1]++ { gsub(/:.+/, “”, $1); print “{“{#TRUNKIP}”:””$1″”},” } END { print “]}” }' | tr -d '
' | sed 's/,]}$/]}
/'
– !seen[$1] – удаляет повторяющиеся IP адреса SIP проваедера. Зачем нам по два раза пинговать один и тот же IP?!
– gsub(/:.+/, “”, $1) – отсекает порт от IP адреса (:5060)
/usr/bin/sudo asterisk -rx “sip show registry” |grep -w $2 | awk '{print $5}'
– Получает название транка и выводит 5 колонку. Как раз в ней состояние транка.
5. P.S. Ссылки, которые помогли
Официальная документация Zabbix
Мониторинг транков (trunk) в asterisk с помощью zabbix
Мониторинг транков Asterisk с помощью низкоуровнего обнаружения Zabbix
Источник: http://sp-it.ru/articles/asterisk_trunk_discovery/index.html
Мониторинг состояния SIP телефонов Asterisk`a в Zabbix
|
|
Источник: https://chronoikproject.livejournal.com/550785.html
Zabbix и asterisk по snmp
awsswa
Источник знаний – http://habrahabr.ru/sandbox/33568/
yum install net-snmp net-snmp-utils net-snmp-libs net-snmp-devel
Тестирование asterisk что он собран с поддержкой snmp
CLI> module show like snmp
res_snmp.so SNMP SubAgent for Asterisk 0
1 modules loade
В /etc/asterisk/res_snmp.conf
[general]
subagent = yes
enabled = yes
в /etc/snmp/snmpd.conf вносим (в конец)
# Asterisk use
createUser asteriskZabbix MD5 asterzabbix DES
rwuser asteriskZabbix priv
# Asterisk configuratio
master agentx
agentXSocket /var/agentx/master
agentXPerms 0660 0550 nobody asteriskЕсли на тестовое подключение нет ответа – значит asterisk запущен не под рутом
помогает добавление в /etc/snmp/snmpd.conf вносим (в конец)
agentuser asterisk
agentgroup asterisk
Проверяем запуск сервиса
chkconfig snmpd on
chkconfig snmptrapd on
service snmpd start
service snmptrapd start
chmod 755 /var/agentx
Шаблоны asterisk-mib.txt digium-mib.txt грузим от сюд
https://wiki.asterisk.org/wiki/display/AST/Asterisk+MIB+Definitionshttps://wiki.asterisk.org/wiki/display/AST/Digium+MIB+Definitions
и сюда /usr/share/snmp/mibs/
Тестирование подключения с паролем по 3 версии SNMP
snmpwalk -v 3 -u asteriskZabbix -n “” -l authPriv -a MD5 -A asterzabbix -X asterzabbix localhost ASTERISK-MIB::astConfigUpTime
ответ
ASTERISK-MIB::astConfigUpTime.0 = Timeticks: (6745740) 18:44:17.40
Тестирование по 2 версии SNMP
snmpwalk -On -v2c -c public localhost ASTERISK-MIB::astConfigUpTime
(Что бы работала вторая версия протокола надо переписывать snmpd.conf добавлая туда коммунити public и давая разрешения для его чтения)
Под катом только изменения относительно стандартного содержания – работает и 2 и 3 версия SNMP
#com2sec notConfigUser default public
com2sec local localhost public
com2sec mynetwork 192.168.0.0/16 public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
group myrwgroup v1 local
group myrwgroup v2c local
group myrwgroup usm local
group myrogroup v1 mynetwork
group myrogroup v2c mynetwork
group myrogroup usm mynetwork
#view systemview included .1.3.6.1.2.1.1#view systemview included .1.3.6.1.2.1.25.1.1
view all included .1
#access notConfigGroup “” any noauth exact systemview none none
access myrwgroup “” any noauth exact all all none
access myrogroup “” any noauth exact all none none
# Asterisk use
createUser asteriskZabbix MD5 asterzabbix DES
rwuser asteriskZabbix priv
# Asterisk configuratio
master agentx
agentXSocket /var/agentx/master
agentXPerms 0660 0550 nobody asterisk
agentuser asterisk
agentgroup asterisk
У вас появляется ругательства вида (1.3.6.1.4.1.22736.1.5.4.1.2)Проверяем наличиеsnmptranslate 1.3.6.1.4.1.22736.1.5.4.1.2Достаточно в zabbix теперь загрузить шаблон и подключить к нужному серверуШаблон брать от сюда и менять все PASSWORD на asterzabbix (наш пароль)
http://www.mzintegration.com/downloads/Template_Asterisk.xml
В zabbix он грузиться в Configuration – Tempaltes – ImportТеперь в настройках Host у zabbix надо к стандартному Agent interfaces включить SNMP interfacesУстановка zabbix
http://www.zabbix.com/wiki/howto/monitor/os/linux/agentinstallonlinux
Порты открывать 161 и 162 по udp, и 10050 и 10051 по tcp (пример показан для vpn (tun0))iptables -A INPUT -i tun0 -p udp -m udp –dport 161:162 -j ACCEPTiptables -A INPUT -i tun0 -p tcp -m tcp –dport 10050:10051 -j ACCEPTПо просьбам трудящихся фото.
Параметры мониторинга зависят от шаблона загруженного в zabbix, шаблон легко редактируется, если вам хочется что-то добавить – смотрите asterisk-mib.txt – читаете описание к параметру и редактируете шаблон.На первом фото – канал завис и провисел всю ночь.
Показывается параметры из шаблонаНастройка клиентаСуществует еще один способ мониторинга через запуск прописанных в zabbix_agentd.conf правил в видеUserParameter=sip.
peersonline,sudo /usr/sbin/asterisk -rx 'sip show peers'|grep –text -i 'sip peers'|awk '{print $5}'Волшебная строка, показывающея падение регистрации (при любых вариантах кроме строки Registered будет показана цифра отличная от нуля)UserParameter=sip.
unreachable,sudo /usr/sbin/asterisk -rx 'sip show registry' | grep -v 'Host' | grep -v 'SIP registration' | grep -v 'Registered' | wc -lЕще интересные строкиПинг до определенного ip адреса, на выходе 1 или 0 в зависимости от пингуется или нетUserParameter=ping.lost,sudo /bin/ping -c1 -W3 192.168.134.133 | grep -o '[0-9]* received' | tr -cd '[0-9]' | awk '{print $1}'
Проверка определенного sip пира на регистрацию, на выходе 1 или 0 в зависимости от статуса “ОК”
UserParameter=sip.reglost,sudo /usr/sbin/asterisk -rx 'sip show peer 422' | grep –text -i 'Status' | grep –text -i 'OK' | wc -l
Для работоспособности сего решения необходимо:yum install sudoНаличие пользователя с именем zabbix в системеИ в /etc/sudoers надо добавить строку вида
zabbix ALL = NOPASSWD: /usr/sbin/asterisk
Проверка:
su zabbixsudo /usr/sbin/asterisk -rx 'sip show registry'или вот так
sudo -u zabbix /usr/sbin/asterisk -rx 'sip show registry'
Если не выдало ошибок на права, значит все работаетUpdate:
Напрягся и переписал шаблон Template_Asterisk, за место Zap стало показывать DAHDI каналы
Шаблон кроме имени DAHDI Channels, от Zap отличается строчкамиastChanTypeChannels.DAHDI.1.3.6.1.4.1.22736.1.5.4.1.7[“index”, 1.3.6.1.4.1.22736.1.5.4.1.2, “DAHDI”]ну и не забудьте в этом же Tempate поменять графический вывод, выкинуть Zap и добавить DAHDIКак найти нужный параметр мониториться ли канал? Делаете звонок и потом в консоле делаете вот это
snmpwalk -v 3 -u asteriskZabbix -n “” -l authPriv -a MD5 -A asterzabbix -X asterzabbix localhost ASTERISK-MIB::astChanTypeChannels
ASTERISK-MIB::astChanTypeChannels.1 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.2 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.3 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.4 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.5 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.6 = Gauge32: 1 < это SIP
ASTERISK-MIB::astChanTypeChannels.7 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.8 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.9 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.10 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.11 = Gauge32: 0 < это DAHDI
ASTERISK-MIB::astChanTypeChannels.12 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.13 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.14 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.15 = Gauge32: 0=====================================================================================Дополнения:Как мониторить с помощью zabbix 2.2 mysql сервера через Template App MySQL
Хорошая документация была вся в иероглифах ( http://qiita.com/iwaim@github/items/8443acf4a4917e5b21fb )
Фокус с этой документацие не прокатил ( http://blog.themilkyway.org/2013/11/how-to-monitor-mysql-using-the-new-zabbix-template-app-mysql/ )1.Создаете еще одного пользователя для мониторингаmysql> GRANT PROCESS ON *.* TO 'zabagent'@'127.0.0.1' IDENTIFIED BY '123pass';
mysql> flush privileges;
2.Создаете папку /var/lib/zabbix и помещаете туда файл .my.cnf с содержанием
mkdir /var/lib/zabbix
touch .my.cnf
chmod 400 /var/lib/zabbix/.my.cnf
chown -R zabbix:zabbix /var/lib/zabbix
cat .my.cnf
[client]
user = zabagent
password = 123pass
host =127.0.0.1
3.Перезапускает агента
service zabbix-agent restart
Источник: https://awsswa.livejournal.com/9764.html