Настройка мониторинга asterisk в zabbix

Сервер телефонии asterisk востребованный и популярный функционал на сегодняшний день. Ранее я подробно о нем рассказывал и показывал, как его использовать в среднестатистическом офисе. Сегодня хочу рассказать, как настроить мониторинг asterisk с помощью сервера мониторинга zabbix. Я подробно расскажу о метриках, которые буду снимать и в конце представлю готовый шаблон для использования.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

У меня есть подробный материал по пошаговой настройке asterisk. В нем не хватает для полноты картины мониторинга. Без него обслуживание и поддержка работоспособности сервера затруднительна. Я всегда стараюсь все, что можно, завести на мониторинг. Так спокойнее живется. Ранее я писал о мониторинге транков. В принципе, на простейший вопрос по доступности транков он отвечает, но в процессе эксплуатации я много раз переделывал этот мониторинг, потому что он малоинформативен.

Например, у вас периодически отваливает один из транков. Мониторинг вам об этом говорит, но вы не знаете, что за транк отвалился и по какой причине. Надо идти на сервер и проверять глазами. Когда на одном из серверов у меня начали глючить пару транков, я не выдержал и переделал этот мониторинг. А заодно и добавил некоторые другие проверки, которые мне показались важными. В итоге получился законченный шаблон для мониторинга всего сервера asterisk. Далее я расскажу обо всем подробнее.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Я все настраивал на сервере с версией 3.2, агенты той же версии. Работоспособность в 3.4 не проверял, но, по идее, все должно работать и там. Если у вас еще нет сервера мониторинга, то можете его установить и настроить - 3.2 или 3.4 на Centos 7 или 3.4 на Debian 9.

Параметры мониторинга asterisk

В интернете есть примеры мониторинга asterisk. Кое-что я оттуда подсмотрел, но готового решения, которое бы мне подошло полностью, я не увидел, поэтому решил сделать по-своему. Я подумал в решил, что мне полезны для мониторинга следующие метрики:

  1. Состояние транков. Если один из них отваливается, я узнаю о его имени уже в оповещении на почте.
  2. Состояние самой службы asterisk на сервере. Тут все просто - либо работает, либо нет.
  3. Состояние работы программы fail2ban. Тоже все просто - либо работает, либо нет.
  4. Наличие цепочек fail2ban в таблице iptables. Эта проверка гарантирует, что fail2ban не только запущен, но и успешно блокирует нарушителей.
  5. Факт перезапуска сервиса asterisk. Как бонус к этой метрике - uptime службы астериска.
  6. Количество активных разговоров в данный момент.

Небольшие комментарии к метрикам. Если сервер смотрит в интернет, то обязательно наличие 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

Таблица триггеров в шаблоне мониторинга asterisk
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

Если какой-то транк отвалится, то в оповещении на почте будет его название. У меня вот так выглядят подобные оповещения.

Оповещение о проблеме с транком в астериск

На этом по мониторингу asterisk в zabbix все. Надеюсь, раскрыл тему достаточно подробно и понятно.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Уже в процессе написания статьи понял, чего в ней не хватает. Мониторинг пиров все же нужен, так как не всегда подключение к провайдеру идет с регистрацией. Если ее нет, то за провайдерским пиром надо бы наблюдать. Возможно, дополню статью позже. Сервера, на которых я все проверял не имели таких пиров, поэтому упустил этот момент, не обратил внимание.

Конечно, не очень правильно запускать zabbix от root. Тут я схалявил, но у меня есть оправдание - в заббиксе нет нормального средства для дебага не работающих скриптов. Итем просто становится неподдерживаемым и частенько приходится гадать, в чем же проблема. Даже когда выставляешь все необходимые права, все перепроверяешь, на стороне агента запускаешь и все работает как надо. Но на сервере итем не принимает данные.

Данный шаблон должен работать вместе со стандартным шаблоном для linux. Я видел в сети примеры шаблонов мониторинга asterisk, куда были добавлены метрики таких параметров сервера, как память, процессор, сеть и т.п. Не вижу смысла в таком подходе. Шаблоны надо максимально разделять, чтобы ими было удобнее пользоваться и не нагружать сервера лишними метриками. Я под каждый функционал сервера делаю отдельный шаблон. Примеры таких шаблонов можно посмотреть в моей рубрике zabbix.

На этом все. Не забываем меня научить, как надо администрировать в комментариях :)

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

65 комментариев

  1. Всем привет. Скрипт запустил вроде как работает, но меня смущает проверка транка, забикс на что-то ругается не могу понять на что именно, гуглил, но из предложенных решений ничего не помогло, подскажите пожалуйста, что не так.

    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

  2. Еще варик
    asterisk -x 'core show calls'| grep 'active call'|awk '{print $1}'

  3. Все, кто столкнулся с проблемами запуска скрипов на агенте начиная с версии 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.

  4. Алексей

    Все прогрессивное человечество уже давно на 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/

  5. Алексей

    При импорте шаблона zabbix выдает ошибку "Cannot read XML: (68) StartTag: invalid element name [Line: 309 | Column: 47].". Это происходит из-за того, что в выражении на линии 309 знак "<" нужно заменить на "<", иначе знак будет парситься как xml тэг.

    • Григорий

      А что конкретно за символ? Буфер обмена не передает. всё равно ошибку мне валит

  6. Здравствуйте. Добавил шаблон, но часть элементов не работает, подскажите в чём может быть проблема
    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"
        Точнее проблема звучит вот так

  7. На тему прав, можно добавить zabbix пользователя в группу в которой юзер запускающий астериск. В моём случае это дефолт main
    Тогда не нужно давать рут права заббиксу
    Для CentOS7 -
    gpasswd -a zabbix main

    • Аноним

      СПАСИБО ЧЕЛОВЕЧИЩЕ!!!! а я всё думал чего это изменения в sudoers не влияют - всё равно скрипты не запускаются

  8. Александр

    Добрый день.

    Если отваливается транк, то на доске в 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
        Доходит до первого совпадения и выводит результат. Не получается вывести имя учётной записи. Подскажете, как это сделать?

        • Не знаю, как сделать. Возможно в регулярном выражении можно как-то указать, что пропускаем первое вхождение, либо указать конкретный номер строки, которую парсим. В регулярках можно сделать практически все, но очень сложно правильно составить выражение :)

  9. Добавил права на скрипт выдаёт вот такое
    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.

  10. Аноним

    Подскажите а как добавить права выскакивает ошибка агента asterisk.trunk [t|sh: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: Permission denied]

  11. Алексей

    Добрый день!

    Подскажите в данном выражение {pbx:asterisk.trunk.count(#2,"All trunks are online","like")}=2 - последняя двойка это общее количество транков?

  12. Странно, но не получается импортировать шаблон. У меня версия 3.4. До шаблона никаких ошибок не было когда делал по статье....

    P.S. Спасибо за ваш сайт, очень много полезной информации на нем получил!!

  13. Александр

    Так подскажите, кто-нибудь победил вот эти ошибки? Как?

    [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

  14. Сергей

    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

  15. Владимир

    zabbix_agentd -t asterisk.trunk выдает что trunk are online
    в мониторинге в поледних данных приходит All Trunk are online
    но на панели пишет проблему Trunk not registered . чтото не могу разобратся почему , что подскажите?

  16. Зачем тут gawk?

    # Время работы службы asterisk
    UserParameter=asterisk.uptime,asterisk -rx "core show uptime seconds" | grep --text -i "System uptime:" | gawk '{print $3}'

  17. zabbix_agentd -t asterisk.trunk asterisk.trunk [t|sh: 1: /etc/zabbix/scripts/asterisk.trunk-with-name.sh: Permission denied]
    такая же проблема

    • проблема решилась добавлением прав для asterisk, но в Monitoring -> Latest data данные не отображаются и не обновляются

      • Тоже столкнулся с такой ошибкой. Подскажите, какие права нужны и как их настроить?

  18. Привет, прокомментируйте пожалуйста результаты тестового прогона:

    [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 не работает, а для работы скрипта не хватает прав?

  19. Владимир

    Еще заметил что на OpenSUSE как-то странно работает шаблон. Данные передал что все транки онлайн а при сбое ничего не меняется.
    И не все триггеры активны, хотя в консоле команды из скрипта выполняются и отдают правильные значения.
    Буду ковырять логи.

  20. Владимир

    Я решил уже, с помощью Last value. Немного переделал шаблон письма и всё супер!

    Есть еще вопрос по пирам. Пробую отделить провайдерские пиры, что бы забиксу передавать инфу только о них.
    Что то пока не получается. Думаю отбирать пиры в имени которых есть a-Z и наблюдать только за ними. Вроде как юзерские пиры только цифрами обозначаются.
    Поправьте если я не прав.

  21. Владимир

    Какая переменная хранит в себе имя транка?
    В письме получаемом от 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 название оффлайн транка приходит.

  22. Добрый день. Делаю по инструкции. При рестарте забикса падает с ошибкой:

    Job for zabbix-agent.service failed because the control process exited with error code. See "systemctl status zabbix-agent.service" and "journalctl -xe" for details.
    
     systemctl status zabbix-agent.service
    ● zabbix-agent.service - Zabbix Agent
       Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
       Active: activating (auto-restart) (Result: exit-code) since Пт 2017-11-03 08:33:44 +07; 4s ago
      Process: 6515 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
      Process: 6638 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=1/FAILURE)
     Main PID: 6383 (code=exited, status=0/SUCCESS)
    
    ноя 03 08:33:44 asterisk.grad.local systemd[1]: zabbix-agent.service: control process exited, code=exited status=1
    ноя 03 08:33:44 asterisk.grad.local systemd[1]: Failed to start Zabbix Agent.
    ноя 03 08:33:44 asterisk.grad.local systemd[1]: Unit zabbix-agent.service entered failed state.
    ноя 03 08:33:44 asterisk.grad.local systemd[1]: zabbix-agent.service failed.
    
     tail -f /var/log/zabbix/zabbix_agentd.log
      6383:20171103:082418.155 **************************
      6383:20171103:082418.155 using configuration file: /etc/zabbix/zabbix_agentd.conf
      6383:20171103:082418.155 agent #0 started [main process]
      6384:20171103:082418.157 agent #1 started [collector]
      6385:20171103:082418.157 agent #2 started [listener #1]
      6386:20171103:082418.160 agent #3 started [listener #2]
      6387:20171103:082418.167 agent #4 started [listener #3]
      6388:20171103:082418.170 agent #5 started [active checks #1]
      6383:20171103:082833.658 Got signal [signal:15(SIGTERM),sender_pid:6515,sender_uid:0,reason:0]. Exiting ...
      6383:20171103:082833.664 Zabbix Agent stopped. Zabbix 3.2.9 (revision 73587).

    Если закомментировать строчку

    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

  23. ¨asterisk -rx 'sip show registry' | sed -n '/Request|No|Auth|Registered/p' "
    в ноябре очень интересно срабатывает.
    думаю ,чот у меня все транки оффлайн.
    и они же онлайн
    ))
    ахахах

    • Да уж, забавно получилось :))) Надо что-то придумать на этот счет! Есть идеи?

    • Самое простое, заменить No на Authentication. Я, кстати, не заметил этот глюк, так как у меня ни один транк не отваливался еще в ноябре. Я даже не сразу понял, при чем тут ноябрь :)

  24. Поправочка -2. Ошибся.
    cut -c -2

  25. Коллега, здравствуй!
    UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1

    cut -c -3 - небольшой фикс у кого кол-во звонков превышает двухзначное число.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar