Сервер телефонии asterisk востребованный и популярный функционал на сегодняшний день. Ранее я подробно о нем рассказывал и показывал, как его использовать в среднестатистическом офисе. Сегодня хочу рассказать, как настроить мониторинг asterisk с помощью сервера мониторинга zabbix. Я подробно расскажу о метриках, которые буду снимать и в конце представлю готовый шаблон для использования.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Содержание:
Введение
У меня есть подробный материал по пошаговой настройке asterisk. В нем не хватает для полноты картины мониторинга. Без него обслуживание и поддержка работоспособности сервера затруднительна. Я всегда стараюсь все, что можно, завести на мониторинг. Так спокойнее живется. Ранее я писал о мониторинге транков. В принципе, на простейший вопрос по доступности транков он отвечает, но в процессе эксплуатации я много раз переделывал этот мониторинг, потому что он малоинформативен.
Например, у вас периодически отваливает один из транков. Мониторинг вам об этом говорит, но вы не знаете, что за транк отвалился и по какой причине. Надо идти на сервер и проверять глазами. Когда на одном из серверов у меня начали глючить пару транков, я не выдержал и переделал этот мониторинг. А заодно и добавил некоторые другие проверки, которые мне показались важными. В итоге получился законченный шаблон для мониторинга всего сервера asterisk. Далее я расскажу обо всем подробнее.
Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.
Я все настраивал на сервере с версией 3.2, агенты той же версии. Работоспособность в 3.4 не проверял, но, по идее, все должно работать и там. Если у вас еще нет сервера мониторинга, то можете его установить и настроить - 3.2 или 3.4 на Centos 7 или 3.4 на Debian 9.
Параметры мониторинга asterisk
В интернете есть примеры мониторинга asterisk. Кое-что я оттуда подсмотрел, но готового решения, которое бы мне подошло полностью, я не увидел, поэтому решил сделать по-своему. Я подумал в решил, что мне полезны для мониторинга следующие метрики:
- Состояние транков. Если один из них отваливается, я узнаю о его имени уже в оповещении на почте.
- Состояние самой службы asterisk на сервере. Тут все просто - либо работает, либо нет.
- Состояние работы программы fail2ban. Тоже все просто - либо работает, либо нет.
- Наличие цепочек fail2ban в таблице iptables. Эта проверка гарантирует, что fail2ban не только запущен, но и успешно блокирует нарушителей.
- Факт перезапуска сервиса asterisk. Как бонус к этой метрике - uptime службы астериска.
- Количество активных разговоров в данный момент.
Небольшие комментарии к метрикам. Если сервер смотрит в интернет, то обязательно наличие iptables и fail2ban. Боты будут регулярно к вам стучаться и перебирать учетки. Так что следить за работой этих служб необходимо. По транкам я уже сказал, это один из основных параметров, так как время от времени они отваливаются. Гораздо чаще, чем сами сервисы. На всякий случай будем следить за работой сервиса астериск на сервере. Он хоть у меня обычно и не падает, даже не припомню такого, но теоретически с ним это может происходить. Мониторинг перезагрузки и аптайма службы сделан в основном для любопытства. Практической пользы в этой метрике я не вижу, если вы единственный админ на сервере и без вас его никто не перезапускает. Мониторинг за количеством активных звонков в asterisk сделан для того, чтобы можно было оценить примерную нагрузку и занятость линий.
Я больше не придумал, на что еще стоит обратить внимание. Некоторые считают количество звонков в день, количество транков, пиров, их статус. Я лично не вижу в этом большого смысла. Если кто-то считает, что есть еще важные параметры в asterisk, которые надо мониторить, прошу поделиться.
Настройка zabbix-agent
Для мониторинга за asterisk, я буду использовать один скрипт и несколько обработанных выводов из запросов к астериску. Начнем со скрипта. Он будет проверять статус транков и если какой-либо из них будет в offline, назовет его. Кладем этот скрипт в директорию /etc/zabbix/scripts.
# cat /etc/zabbix/scripts/asterisk.trunk-with-name.sh
#!/bin/bash # Получаем количество всех транков в системе total=`sudo asterisk -rx 'sip show registry' | sed -n '/registrations/p' | awk '{print $1}'` # Получаем число активных транков active=`sudo asterisk -rx 'sip show registry' | sed -n '/Registered/p' | wc -l` # Получаем имена транков с проблемам offline=`sudo asterisk -rx 'sip show registry' | sed -n '/Request\|Rejected\|Authentication\|Auth/p' | awk '{print $3}'` # Сравниваем общее число с числом активных транков и выводим сообщение об их состоянии if [ $active -lt $total ] then echo Trunks offline $offline else echo All trunks are online fi
Я все прокомментировал. Добавлю только пояснение к регулярке, которая определяет проблемные транки. Я знаком со следующими состояниями транков, когда они не работают:
- Request Sent
- No Authentication
- Auth. Sent
- Rejected
Соответственно, эти состояния я и ищу. Если один из транков находится в одном из этих состояний, то он считается проблемным.
Далее создаем файл конфигурации zabbix с UserParameters в /etc/zabbix/zabbix_agentd.d.
# cat /etc/zabbix/zabbix_agentd.d/asterisk.conf
# Статус службы fail2ban UserParameter=asterisk.fail2ban_status,ps cax | grep fail2ban | wc -l # Количество цепочек fail2ban в iptables UserParameter=asterisk.fail2ban_chain,iptables -nL | grep Chain | grep -E 'f2b|fail2ban' | wc -l # Время работы службы asterisk UserParameter=asterisk.uptime,asterisk -rx "core show uptime seconds" | grep --text -i "System uptime:" | gawk '{print $3}' # Количество активных разговоров UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1 # Статус транков UserParameter=asterisk.trunk,/etc/zabbix/scripts/asterisk.trunk-with-name.sh # Статус службы asterisk UserParameter=asterisk.asterisk_status,ps cax | grep asterisk | wc -l
Некоторые из приведенных метрик требуют права root для своего исполнения. Скажу честно, мне было лениво разбираться с разрешениями и я просто запустил zabbix с правами root. Для этого в его конфиге /etc/zabbix/zabbix_agentd.conf раскомментировал следующую строку:
AllowRoot=1
После этого можно перезапустить zabbix-agent и проверить работу будущих итемов.
# systemctl restart zabbix-agent
Проверяем, насколько корректно агент возвращает указанные значения.
# zabbix_agentd -t asterisk.asterisk_status asterisk.asterisk_status [t|2]
# zabbix_agentd -t asterisk.fail2ban_chain asterisk.fail2ban_chain [t|2]
# zabbix_agentd -t asterisk.trunk asterisk.trunk [t|All trunks are online]
Все в порядке. В завершении настройки агента, поясню некоторые моменты для тех, кто не очень разбирается в bash скриптах. Для мониторинга статусов служб я просто вывожу список всех процессов, вычленяю из него нужный мне процесс, в данном случае asterisk или fail2ban и подсчитываю количество этих процессов. Далее в шаблоне я просто буду проверять число этих процессов. Если оно будет равно 0, значит процессы не работают.
Для анализа цепочки iptables я также обрабатываю ее вывод, ищу строки со словами fail2ban и подсчитываю их количество. Если они равны 0, значит fail2ban не работает, либо работает, но не добавляет правила в iptables, что по большому счету и равно тому, что он не работает.
Для мониторинга активных разговоров, я обрабатываю соответствующий вывод asterisk, вырезаю лишние строки и оставляю только необходимое мне число.
Мониторинг asterisk в zabbix сервере
Всю теорию я изложил выше. Осталось только добавить готовый шаблон на сервер и посмотреть на результат. Скачиваем шаблон - zabbix-asterisk-template.xml и импортируем его на сервер. В шаблоне присутствуют 6 элементов данных, которые мы определили в агенте, 5 триггеров и 1 график просто для красоты, чтобы был :). В этом шаблоне надобности в графиках нет. Остановлюсь подробнее на триггерах.
Asterisk down on {HOST.NAME} | Срабатывает, если последняя проверка количества запущенных процессов астериск вернула 0. |
Asterisk restarted on {HOST.NAME} | Тригер реагирует на изменение uptime службы. Если он стал меньше 300 секунд, то считается, что служба была перезапущена. |
Fail2ban down on {HOST.NAME} | Срабатывает, если последняя проверка количества запущенных процессов fail2ban вернула 0. |
Fail2ban inactive on {HOST.NAME} | Проверяет, есть ли в правилах iptables цепочки fail2ban. Если нет, срабатывает. |
Trunk not registered on {HOST.NAME} | Срабатывает, если хотя бы одна из регистраций отвалилась. |
Первые 4 триггера очевидны, по ним комментировать нечего. Остановлюсь на последнем с проверкой транков. Данный триггер проверяет текстовую строку "All trunks are online", которую возвращает итем. Если 2 раза подряд ее не было, значит проблема, и идет оповещение. Проблема закрывается, когда она же появляется 2 раза подряд. Сделал специально 2 проверки, чтобы не было ложных срабатываний на моментах перерегистрации или кратковременных сбоев, которые не требуют вмешательства.
После применения шаблона на хостах, увидите примерно такую картинку в "Последних данных".
Если какой-то транк отвалится, то в оповещении на почте будет его название. У меня вот так выглядят подобные оповещения.
На этом по мониторингу asterisk в zabbix все. Надеюсь, раскрыл тему достаточно подробно и понятно.
Заключение
Уже в процессе написания статьи понял, чего в ней не хватает. Мониторинг пиров все же нужен, так как не всегда подключение к провайдеру идет с регистрацией. Если ее нет, то за провайдерским пиром надо бы наблюдать. Возможно, дополню статью позже. Сервера, на которых я все проверял не имели таких пиров, поэтому упустил этот момент, не обратил внимание.
Конечно, не очень правильно запускать zabbix от root. Тут я схалявил, но у меня есть оправдание - в заббиксе нет нормального средства для дебага не работающих скриптов. Итем просто становится неподдерживаемым и частенько приходится гадать, в чем же проблема. Даже когда выставляешь все необходимые права, все перепроверяешь, на стороне агента запускаешь и все работает как надо. Но на сервере итем не принимает данные.
Данный шаблон должен работать вместе со стандартным шаблоном для linux. Я видел в сети примеры шаблонов мониторинга asterisk, куда были добавлены метрики таких параметров сервера, как память, процессор, сеть и т.п. Не вижу смысла в таком подходе. Шаблоны надо максимально разделять, чтобы ими было удобнее пользоваться и не нагружать сервера лишними метриками. Я под каждый функционал сервера делаю отдельный шаблон. Примеры таких шаблонов можно посмотреть в моей рубрике zabbix.
На этом все. Не забываем меня научить, как надо администрировать в комментариях :)
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Всем привет. Скрипт запустил вроде как работает, но меня смущает проверка транка, забикс на что-то ругается не могу понять на что именно, гуглил, но из предложенных решений ничего не помогло, подскажите пожалуйста, что не так.
Zabbix Server и Zabbix Agent на Asterisk 5.0.8
02/23/2021 09:37:49 AM
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
All trunks are online
Решил проблему добавив в /etc/sudoers следующее
zabbix ALL = NOPASSWD: /usr/sbin/asterisk
Есть ещё один вопрос уведомление приходят, и проблема и решение, но не показывает какие транки в оффлайне, помогите разобраться
Problem: Trunk not registered on IP-PBX
Problem started at 13:23:49
Host: IP-PBX
Еще варик
asterisk -x 'core show calls'| grep 'active call'|awk '{print $1}'
Все, кто столкнулся с проблемами запуска скрипов на агенте начиная с версии 4.0.15, загляните в документацию.
Ссылку оставил тут:
https://www.zabbix.com/documentation/4.0/ru/manual/appendix/install/run_agent_as_root
Надеюсь это кому-то поможет.
Спасибо, полезная информация.
Не могу понять куда закидывать этот файл в centos 6.5. Не можете подсказать?
/etc/systemd/system/zabbix-agent.service.d/ - такого пути нет.
А сюда - /etc/zabbix/, я так понимаю не корректно ?
На Centos 6 вообще не надо этого делать, так как там нет systemd. Достаточно просто в конфиге zabbix-agent указать работу от root.
Все прогрессивное человечество уже давно на PJSIP.
Прямо таки все? Чем подтвердите данное утверждение? Заодно скажите в контексте данной статьи и настроек, какое преимущество получит пользователь при переходе на pjsip?
SIP устаревший модуль в Asterisk и признан устаревшим и официально больше не поддерживается командой Asterisk. Они рекоменудют переходить на PJSIP.
Подробнее здесь: https://community.asterisk.org/t/difference-sip-and-pjsip-installation/78289
Я это знаю. Думаю, модуль sip еще долго будет поддерживаться, хоть и в статусе deprecated. Я исследовал эту тему и не нашел в настоящее время никаких преимуществ в практическом применении pjsip против sip. Просто чуть дольше настройка будет в случае pjsip.
Да, будь твоя воля. до сих пор бы на Windows 95 сидел наверно. Я это называю - ретроградство. И боязнь нового. Что-то одно выучил испробовал на практике, более новое уже нет желания учить. А зачем. И так работает.
В некоторых случаях для админа это хорошо. Но тут главное в прошлом не застрять.
Насчет PJSIP приемуществ много. Просто на беглый взгляд они не совсем очевидны. Ну хотя бы даже то, что сам стек PJSIP реализован в виде пакета, предоставленного набором загружаемых модулей, вместо одного модуля драйвера канала. И не нужные модули можно отключить, для экономии ресурсов. Ну и с точки зрения программиста - там гораздо удобнее работать с этим стеком, чем со сторым монолитным драйвером. Писать более быстрые и энергоэффективные фитчи.
Просто если есть две технологии. Одна развивающаяся, а другая стабильная - ну тут ладно, каждый выбирает по себе. Но если уже в статусе deprecated, это явный сигнал - пора этот хлам оставлять и переходить на что-то новое.
Это все пустые слова. Реальные преимущества я так и не увидел. Экономия ресурсов? И сколько можно сэкономить? Asterisk для офиса на 100 пользователей висит на виртуалке с 2 Гб памяти и 1 cpu. Я не вижу смысла тратить время на экономию ресурсов при таких аппетитах.
Называть меня ретроградом, видя этот сайт и статьи на нем, это пустословие. Я практик и много работаю с различными заказчиками и технологиями. Все, что я пишу, я пробовал сам. К примеру, пакеты ifconfig и netstat в статусе deprecated уже лет 10, но ими продолжают пользоваться до сих пор, в том числе и я. Хотя ifconfig давно не использовал, но netstat регулярно.
То же самое будет с пакетом iptables. Его тоже начинают объявлять deprecated, заменяя nftables. Посмотрим, сколько это будет длиться. Думаю, лет 10-15. Новое не значит лучшее. Зачастую нововведения происходят не по объективным причинам и не для удобства конечных пользователей. Нужно это понимать, тестировать нововведения и решать конкретно для себя, надо тебе это или нет.
О, вот кстати, отличная статья только недавно вышла, про приемущества PJSIP https://voxlink.ru/kb/asterisk-configuration/vazhnye-funktsii-i-instrumenty-otlichajuschie-pjsip-ot-sip/
При импорте шаблона zabbix выдает ошибку "Cannot read XML: (68) StartTag: invalid element name [Line: 309 | Column: 47].". Это происходит из-за того, что в выражении на линии 309 знак "<" нужно заменить на "<", иначе знак будет парситься как xml тэг.
А что конкретно за символ? Буфер обмена не передает. всё равно ошибку мне валит
Здравствуйте. Добавил шаблон, но часть элементов не работает, подскажите в чём может быть проблема
1)
Asterisk: Asterisk Uptime Триггеры 1 asterisk.uptime 60 7d 90d Zabbix агент Asterisk Не поддерживается
выдаёт "Value of type "string" is not suitable for value type "Numeric (unsigned)". Value "Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)""
2)
Asterisk: Fa2ilban Chains Триггеры 1 asterisk.fail2ban_chain 60 7d 90d Zabbix агент Asterisk Не поддерживается
Value of type "string" is not suitable for value type "Numeric (unsigned)". Value "iptables: Permission denied (you must be root).
0"
3)
Asterisk: Ongoing Calls asterisk.active_calls 30 7d 30d Zabbix агент Asterisk Не поддерживается
Value of type "string" is not suitable for value type "Numeric (unsigned)". Value "Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)"
Решилась проблема, помогло chmod 777 /var/run/asterisk/asterisk.ctl и заного добавить шаблон
Добрый вечер, столкнулся с такой же проблемой, но не помогло ваше решение, есть еще варианты ?)
Value of type "string" is not suitable for value type "Numeric (unsigned)". Value "Unable to open specified master config file '/etc/asterisk/asterisk.conf', using built-in defaults
0"
Точнее проблема звучит вот так
На тему прав, можно добавить zabbix пользователя в группу в которой юзер запускающий астериск. В моём случае это дефолт main
Тогда не нужно давать рут права заббиксу
Для CentOS7 -
gpasswd -a zabbix main
СПАСИБО ЧЕЛОВЕЧИЩЕ!!!! а я всё думал чего это изменения в sudoers не влияют - всё равно скрипты не запускаются
Добрый день.
Если отваливается транк, то на доске в zabbix пишется на какой хосте отвалился транк, но не пишет какой именно.
Можно к хосту добавить ещё и информацию об имени транка?
Можно, но готовое решение я не скажу, надо проверять. Подскажу только, что в названии триггера можно использовать регулярные выражения и переменные zabbix, например {ITEM.VALUE}. С помощью этих средств в название триггера можно выводить практически все, что угодно. Например, вот так:
SSH auth {{ITEM.VALUE}.iregsub("Accepted password for (.*)port", "\1")}
Это пример из мониторинга подключений по ssh. Здесь в названии триггера присутствуют данные из самого итема. Это как раз то, что нужно вам. Делайте по аналогии.
Добрый день.
С транками более или менее разобрался. А как быть если мне нужно вывести имя заблокированной учётки?
Значение
____________________________________________________________
Заблокирована учетная запись пользователя.
Субъект:
Идентификатор безопасности: S-1-5-18
Имя учетной записи: DC01$
Домен учетной записи: INTER
Идентификатор входа: 0x3E7
Заблокированная учетная запись:
Идентификатор безопасности:
Имя учетной записи: test
Дополнительные сведения:
Имя вызывающего компьютера: SYSADMIN
___________________________________________________________
{{ITEM.VALUE}.iregsub("Имя учетной записи:\s+([a-zA-Z0-9]+)", "\1")}
В этом варианте выведет: DC01
Доходит до первого совпадения и выводит результат. Не получается вывести имя учётной записи. Подскажете, как это сделать?
Не знаю, как сделать. Возможно в регулярном выражении можно как-то указать, что пропускаем первое вхождение, либо указать конкретный номер строки, которую парсим. В регулярках можно сделать практически все, но очень сложно правильно составить выражение :)
Добавил права на скрипт выдаёт вот такое
zabbix_agentd -t asterisk.trunk
asterisk.trunk [t|sh: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: /bin/bash^M: bad interpreter: No such file or directory]
Помогите решить проблему
У вас в скрипте, в первой строке есть лишние символы после #!/bin/bash, удалите их. В ошибке это явно указано:
/bin/bash^M.
Подскажите а как добавить права выскакивает ошибка агента asterisk.trunk [t|sh: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: Permission denied]
Такая же фигня. AllowRoot=1 в конaигурации агента прописан
AllowRoot начиная с какой-то версии zabbix перестал работать. Надо юнит systemd править и там писать запуск от root.
https://www.zabbix.com/documentation/4.0/ru/manual/appendix/install/run_agent_as_root
Добрый день!
Подскажите в данном выражение {pbx:asterisk.trunk.count(#2,"All trunks are online","like")}=2 - последняя двойка это общее количество транков?
Нет. В данном случае используется функция триггера count, подробнее про ее синтаксис - https://www.zabbix.com/documentation/4.0/ru/manual/appendix/triggers/functions
Конкретно тут указано, если не ошибаюсь, условие, что в последних двух значениях строка All trunks are online встречается 2 раза.
Спасибо!
Странно, но не получается импортировать шаблон. У меня версия 3.4. До шаблона никаких ошибок не было когда делал по статье....
P.S. Спасибо за ваш сайт, очень много полезной информации на нем получил!!
Так подскажите, кто-нибудь победил вот эти ошибки? Как?
[root@pbx-msk zabbix]# zabbix_agentd -t asterisk.fail2ban_chain
asterisk.fail2ban_chain [t|0]
[root@pbx-msk zabbix]# zabbix_agentd -t asterisk.trunk
asterisk.trunk [t|sh: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: Permission denied]
Так что тут побеждать? Прямым текстом написано, что у zabbix не хватает прав:
Permission denied
UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1
При количестве активных разговоров больше 10 выдает только первую цифру, т.е. 1
Исправил на
UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1-3
zabbix_agentd -t asterisk.trunk выдает что trunk are online
в мониторинге в поледних данных приходит All Trunk are online
но на панели пишет проблему Trunk not registered . чтото не могу разобратся почему , что подскажите?
Зачем тут gawk?
# Время работы службы asterisk
UserParameter=asterisk.uptime,asterisk -rx "core show uptime seconds" | grep --text -i "System uptime:" | gawk '{print $3}'
zabbix_agentd -t asterisk.trunk asterisk.trunk [t|sh: 1: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: Permission denied]
такая же проблема
проблема решилась добавлением прав для asterisk, но в Monitoring -> Latest data данные не отображаются и не обновляются
Тоже столкнулся с такой ошибкой. Подскажите, какие права нужны и как их настроить?
Привет, прокомментируйте пожалуйста результаты тестового прогона:
[root@pbx-msk zabbix]# zabbix_agentd -t asterisk.asterisk_status
asterisk.asterisk_status [t|2]
[root@pbx-msk zabbix]# zabbix_agentd -t asterisk.fail2ban_chain
asterisk.fail2ban_chain [t|0]
[root@pbx-msk zabbix]# zabbix_agentd -t asterisk.trunk
asterisk.trunk [t|sh: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: Permission denied]
- я так понял fail2ban не работает, а для работы скрипта не хватает прав?
Еще заметил что на OpenSUSE как-то странно работает шаблон. Данные передал что все транки онлайн а при сбое ничего не меняется.
И не все триггеры активны, хотя в консоле команды из скрипта выполняются и отдают правильные значения.
Буду ковырять логи.
Я решил уже, с помощью Last value. Немного переделал шаблон письма и всё супер!
Есть еще вопрос по пирам. Пробую отделить провайдерские пиры, что бы забиксу передавать инфу только о них.
Что то пока не получается. Думаю отбирать пиры в имени которых есть a-Z и наблюдать только за ними. Вроде как юзерские пиры только цифрами обозначаются.
Поправьте если я не прав.
Какая переменная хранит в себе имя транка?
В письме получаемом от Zabbix не могу вывести имя транка.
Заранее спасибо
Если делать по моему примеру, то имя транка в письме будет. У меня приведен пример оповещения на почте. С сервера заббикса приходит погрепанная строка с именем отвалившегося транка. Дефолтное оповещение на сервере заббикса, которое идет из коробке, имя этого транка отправляет вот по этому шаблону:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
Если имени транка в письме нет, значит оно с самого сервера астериска не приходит в заббикс. Проверить можно в "Последних данных". Посмотреть, какая строка приходит при пропадании транка.
Добрый день!
Дефолтное оповещение у нас в Zabbix 3.4 выглядит так:
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
Если добавить ключ {ITEM.VALUE1}, название отвалившегося транка будет приходить по почте\отображаться на dashboard? В latest data название оффлайн транка приходит.
Мне кажется, было бы быстрее проверить, чем меня спрашивать :) Я не помню уже, но у меня точно приходит имя транка в письме. Я часто вижу эти оповещения. Если что, тут список всех поддерживаемых заббиксом макросов - https://www.zabbix.com/documentation/4.0/ru/manual/appendix/macros/supported_by_location
Добрый день. Делаю по инструкции. При рестарте забикса падает с ошибкой:
Если закомментировать строчку
UserParameter=asterisk.trunk,/etc/zabbix/scripts/asterisk.trunk-with-name.sh
в asterisk.conf то стартует нормально :)
Allow root стоит 1 :)
Вы что-то путаете.
"Если закомментировать строчку
UserParameter=asterisk.trunk,/etc/zabbix/scripts/asterisk.trunk-with-name.sh
в asterisk.conf то стартует нормально"
Это опечатка или нет? Этот параметр нужно писать в конфиг заббикса, а не астериска. Если все же опечатка, то не знаю, что посоветовать. Если только все проверить еще раз. У меня на нескольких серверах стоит эта проверка и нигде она не приводит к падению агента. Более того, я вообще ни разу не сталкивался с тем, чтобы хоть какой-то UserParameter приводил к падению. Максимум - ошибка при запуске с сообщением об этом в логе.
Я имел ввиду этот файл
/etc/zabbix/zabbix_agentd.d/asterisk.conf
я же правильно понимаю что он на сервере с астериском в папке забикс агента?
в общем в понедельник ещё раз пройдусь по нему.
единственное отличие это то что fail2ban я не настраивал за ненадобностью и следовательно 2 строчки с ним убрал
Да, все правильно. Файл должен быть там. Это я перепутал.
аналогичная ситуация, как решили?
Отличная инструкция, только в моменте asterisk.trunk-with-name.sh нужно прописать по лгике
chmod +x asterisk.trunk-with-name.sh
¨asterisk -rx 'sip show registry' | sed -n '/Request|No|Auth|Registered/p' "
в ноябре очень интересно срабатывает.
думаю ,чот у меня все транки оффлайн.
и они же онлайн
))
ахахах
Да уж, забавно получилось :))) Надо что-то придумать на этот счет! Есть идеи?
Самое простое, заменить No на Authentication. Я, кстати, не заметил этот глюк, так как у меня ни один транк не отваливался еще в ноябре. Я даже не сразу понял, при чем тут ноябрь :)
Поправочка -2. Ошибся.
cut -c -2
Коллега, здравствуй!
UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1
cut -c -3 - небольшой фикс у кого кол-во звонков превышает двухзначное число.
Спасибо за дополнение. По месту, возможно, что-то надо подкрутить, как в этом примере.
Я поставил cut -c1-2
Я сделал cut -c1-3
И вообще можно такой запрос написать
asterisk -x ‘core show calls’| grep ‘active call’| cut -c1-3