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)
/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
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 будем данные получать
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 нужно его подсовывать в виде UCD-SNMP-MIB::ucdavis.51.3.1.1.8.105.112.109.105.116.101.109.112
9) Ну вот пожалуй и все, что я хотел разжевать по мониторингу Asterisk. Как настроить Cacti, чтобы на основании MIB рисовал график, я рассказывать не буду- подустал что-то писать. Но если уж кому очень нужно, то пишите в этом топике, может и соберусь рассказать.