VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Monitoring Asterisk на Cacti

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Аватара пользователя
goba
Сообщения: 50
Зарегистрирован: 31 мар 2011, 17:51
Откуда: Ярославская обл.

Monitoring Asterisk на Cacti

Сообщение goba »

Имеется: Asterisk(карта Digium Wildcard TE121) <--- поток E1 ---> АТС провайдера.

30 голосовых линий потока E1 разбиты на 2 группы. Группы имеют названия g1 и g2.
Исходящие идут, ну допустим так:
exten => _XXXXXX,1,Dial(DAHDI/g1/${EXTEN},300,T)
exten => _XXXXXXXX,1,Dial(DAHDI/g2/${EXTEN},300,T)

Задача:
Мониторить на Cacti число звонков по каждой из групп отдельно (отдельный график на каждую группу).

Решение:
Данные о звонках будем получать встроенными средствами Asterisk (asterisk -rx "show channels").
Используя перенаправление в файл и утилиту командной строки Grep мы будем получать в текстовом файле число звонков, удовлетворяющее конкретным условиям. Раз в начале этого топика я поставил задачу мониторить количество звонков в рамках групп g1 и g2, то распишем подробно как это сделать для мониторинга звонков (исходящих) в рамах группы g1.

2) Команда show channels выводит нам звонок в консоли Asterisk (запуск консоли: asterisk -r) в следующем виде:

Код: Выделить всё

sip*CLI> show channels

Channel                   Location                   State   Application(Data)
SIP/220-007bf9e0     347003@PRI:12        Up      Dial(DAHDI/g1/347003|300|T)

1 active channels
1 of 255 max active calls ( 1.18% of capacity) 
таким образом грепуем вывод этой команды по регулярному выражению g1 и перенаправляем число звонков (строк) в группе g1 в файл sip_g1.txt
/usr/sbin/asterisk -rx "show channels" |grep g1 |grep -c . > /usr/local/bin/sip_g1.txt

Внимание, я указываю везде полные пути. Это необходимо для запуска скрипта по crontab (об этом чуть далее)


Итак запуская вышеуказанную команду, мы получаем в sip_g1.txt число звонков, в текущий момент времени.

3) пишем скрипт sip_g1.sh, где указываем эту команду:

Код: Выделить всё

#!/bin/bash

/usr/sbin/asterisk -rx "show channels" |grep g1 |grep -c . > /usr/local/bin/sip_g1.txt 
4) Добавляем запуск этого скрипта каждые 3 минуты в crontab (расписывать как это сделать не буду, в Нете много инфы по данной теме )

5) Теперь актуальные, меняющиеся во времени данные, о исходящих звонках в рамках группу g1 (файл sip_g1.txt), надо забрать по SNMP и на основании их рисовать график на Cacti.

6) Инсталим на Asterisk сервере SNMP (apt-get install net-snmp).
Конфигурируем SNMP в фале /etc/snmp/snmpd.conf Исправить нужно только в трех местах, при том что конфиг на первый взгляд пугает.

Код: Выделить всё

#       sec.name         source              community
com2sec local            127.0.0.1           private
com2sec mynetwork   10.0.0.2/32       public    # <--------- адрес сервера Cacti

# System contact information
# It is also possible to set the sysContact and sysLocation system
# variables through the snmpd.conf file:
syslocation SIP    # <---- любое имя
syscontact  goba    # <---- тоже любое имя, ни на что не влияет.

# Note:  this has been specifically commented out to prevent
# accidental security holes due to someone else on your system writing
# a /tmp/shtest before you do.  Uncomment to use it.
#
# exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
extend .1.3.6.1.4.1.2021.51 ipmitemp /bin/cat /usr/local/bin/sip_g1.txt  #< ---- MIB для Cacti по которому по SNMP будем данные получать 
7) Рестартуем snmpd (service snmpd reload), чтобы изменения вступили в силу. И переходим к Cacti

8 ) На сервере Cacti пробуе получить данные по SNMP (10.0.0.44- адрес сервера asterisk):
snmpwalk -v 1 10.0.0.44 -c public .1.3.6.1.4.1.2021.51

Код: Выделить всё

UCD-SNMP-MIB::ucdavis.51.2.1.20.8.105.112.109.105.116.101.109.112 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.51.2.1.21.8.105.112.109.105.116.101.109.112 = INTEGER: 1
[b]UCD-SNMP-MIB::ucdavis.51.3.1.1.8.105.112.109.105.116.101.109.112 = STRING: "0"[/b]
UCD-SNMP-MIB::ucdavis.51.3.1.2.8.105.112.109.105.116.101.109.112 = STRING: "0"
UCD-SNMP-MIB::ucdavis.51.3.1.3.8.105.112.109.105.116.101.109.112 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.3.1.4.8.105.112.109.105.116.101.109.112 = INTEGER: 0 
Нужный для Cacti MIB я выделил жирным, именно в нем отображается значение "0" из файла sip_g1.txt
Для Cacti нужно его подсовывать в виде UCD-SNMP-MIB::ucdavis.51.3.1.1.8.105.112.109.105.116.101.109.112

9) Ну вот пожалуй и все, что я хотел разжевать по мониторингу Asterisk. Как настроить Cacti, чтобы на основании MIB рисовал график, я рассказывать не буду- подустал что-то писать. Но если уж кому очень нужно, то пишите в этом топике, может и соберусь рассказать.
Один телефон – это необходимость, два телефона – богатство,
три телефона – роскошь, а ни одного телефона – блаженство.
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Monitoring Asterisk на Cacti

Сообщение zzuz »

Да уж. Епический костыль.
Линия24 - Системы Массового Телефонного Обслуживания
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH