Um recurso pouco explorado no Asterisk é a monitoração via SNMP.
O Asterisk já implementa há bastante tempo o SNMP, e a MIB ainda é a mesma desde 2008. Mas, algumas empresas, como por exemplo, a Khomp, estendem o recurso padrão disponibilizando uma série de outras informações muito úteis que merecem ser monitoradas (status do link E1, por exemplo).
Neste post, vou dar um exemplo bem simples de como monitorar a evolução das chamadas ativas usando o MRTG e o SNMP nativo do Asterisk.
Para começar instale os pacotes necessários para a implementação:
apt-get install librrds-perl mrtg-rrd
Após, é preciso que o suporte a SNMP esteja configurado no Asterisk (módulo res_snmp) e que o mesmo esteja ativo no arquivo /etc/asterisk/res_snmp.conf.
Depois que o Asterisk estiver funcionando corretamente e com suporte a SNMP, iremos configurar o SNMP para que as informações do Asterisk possam ser obtidas.
Para isso, abra o arquivo /etc/snmp/snmpd.conf e adicione as seguintes linhas no final:
# Enable AgentX support master agentx # Set permissions on AgentX socket and containing # directory such that process in group 'asterisk' # will be able to connect agentXSocket /var/agentx/master agentXPerms 0660 0550 nobody asterisk
Reinicie o SNMP para que as novas configurações entrem em produção.
Após, crie o script /usr/local/sbin/calls_snmp_mrtg.sh com o segundo conteúdo.
#! /bin/bash host=localhost community=public version=1 oid=.1.3.6.1.4.1.22736.1.2.6 value=`/usr/bin/snmpwalk -c $community -v $version $host $oid| grep -i ASTERISK-MIB| cut -f 4 -d " "` # Saída da primeira linha do MRTG (cor verde) - incoming echo 0 # Saída da segunda linha do MRTG (cor azul) - outcoming echo $value # Uptime echo 0 # Nome echo 0
Não esqueça de dar permissão de execução para o mesmo.
Crie agora o arquivo /etc/mrtg-asterisk.cfg, com os seguintes dados:
EnableIPv6: no WorkDir: /var/www/mrtg/asterisk Options[_]: growright,nopercent,perminute Logformat: rrdtool Interval: 1 PathAdd: /usr/bin/ LibAdd: /usr/lib/perl5/ Title[ligacoes_ativas-asterisk]: Ligações ativas - Asterisk PageTop[ligacoes_ativas-asterisk]: <H1>Ligações ativas - Asterisk</H1> Target[ligacoes_ativas-asterisk]: `/usr/local/sbin/calls_snmp_mrtg.sh` YLegend[ligacoes_ativas-asterisk]: Ligações ativas LegendI[ligacoes_ativas-asterisk]: LegendO[ligacoes_ativas-asterisk]: Ligações ativas ShortLegend[ligacoes_ativas-asterisk]: chamadas MaxBytes[ligacoes_ativas-asterisk]: 100 Step[ligacoes_ativas-asterisk]: 60
Crie também o diretório /var/www/mrtg/asterisk.
Crie (ou edite) o arquivo /etc/cron.d/mrtg, adicionando a seguinte linha:
*/1 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg-asterisk.cfg ] && [ -d "$(grep '^[[:space:]]*[^#]*[[:space:]]*WorkDir' /etc/mrtg-asterisk.cfg | awk '{ print $NF }')" ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg-asterisk.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi
Por fim, edite o arquivo /etc/mrtg-rrd.conf, e altere o arquivo .cfg listado para /etc/mrtg-asterisk.cfg.
Pronto. Agora basta aguardar que logo seu gráfico começará a ser plotado.
Para acessá-lo vá no endereço http(s)://www.meudominio.com.br/cgi-bin/mrtg-rrd.cgi