Recentemente resolvi olhar com mais carinho ao MRTG, que já uso desde muitos anos atrás, e comecei a ter novas vontades como por exemplo: monitorar a carga do servidor (loadavg), monitorar o uso do processador, a temperatura, a voltagem de alimentação (vcore), e mesmo sabendo que isso já havia sido feito anteriormente eu resolvi fazer do meu jeito.. com SHellscript! para então aplicar novas idéias: monitorar o nível de sinal do cable modem (que gera sinais negativos e o mrtg não aceita números negativos) entre outras!
Uma solução interessante para monitorar os níveis do sinal do cable modem, mas que não gostei, foi de alguém que simplesmente adicionou +20 aos números, assim eles seriam sempre positivos… mas para saber o valor real precisamos lembrar de subtrair 20…
Eu queria ir além: queria ter um gráfico negativo e positivo usando o MRTG, sem recorrer ao rrdtool ou ao cactis. Então me surgiu a idéia simples de utilizar as duas linhas de dados do MRTG: uma para o sinal negativo e outra para o sinal positivo.. com o gráfico alternando entre si e mostrando de maneira simples o nível do sinal! Foi preciso criar um script que trata a informação alternando a linha de dados para o valor retornado de acordo com o sinal (positivo ou negativo) e o resultado eu achei surpreendente! 😎
Agora, aguardo apenas uma média bem calculada do nível do sinal para equalizar o modem adequadamente em meu amplificador variável, deixando tudo verde! 💡
A configuração no mrtg.cfg é simples:
Target[modem_ds]: `/path/script.sh` SetEnv[modem_ds]: MRTG_INT_IP="192.168.100.1" MRTG_INT_DESCR="eth1" Options[modem_ds]: growright,gauge,nopercent YLegend[modem_ds]: dBmV ShortLegend[modem_ds]: dBmV LegendI[modem_ds]: Nível +: LegendO[modem_ds]: Nível -: Legend1[modem_ds]: Nível Positivo do Sinal de Downstream do Cable Modem Legend2[modem_ds]: Nível Negativo do Sinal de Downstream do Cable Modem Factor[modem_ds]: 0.1 YTicsFactor[modem_ds]: 0.1 MaxBytes[modem_ds]: 200 Title[modem_ds]: Análise do Sinal de Downstream do Cable Modem
O script que eu criei é muito bacana e funciona para os modems da Motorola, para outros é preciso verificar as OIDs e o acesso snmp:
#!/bin/bash on="`/usr/bin/snmpget -v2c -O qvU -c public 192.168.100.1 1.3.6.1.2.1.10.127.1.1.2.1.1.4`" if [ "$on" != "No Such Object available on this agent at this OID" ] && [ -n "$on" ]; then value="`/usr/bin/snmpget -v2c -O qvU -c public 192.168.100.1 1.3.6.1.2.1.10.127.1.1.1.1.6.3`" if [ "$value" -gt 0 ]; then echo "$value" echo "0" else echo "0" echo "$value * -1" | bc fi echo "`/usr/bin/snmpget -v2c -O v -c public 192.168.100.1 .1.3.6.1.2.1.1.3.0 | awk '{ print $3, $4, $5 }' | sed "s/.00//"`" echo "`/usr/bin/snmpget -v2c -O qvU -c public 192.168.100.1 .1.3.6.1.2.1.1.5.0`" else echo -en "0\n0\n0\n \n" fi
Após essa solução criativa para o modem eu resolvi inovar gerando um gráfico dos emails recebidos e recusados pelo meu servidor!
De maneira muito mais simples que os sinais do cable modem eu criei essa configuração no mrtg.cfg:
Target[postfix]: `grep "delivered to maildir" /var/log/maillog | wc -l; grep ": reject:" /var/log/maillog | wc -l; uptime | cut -c 13- | sed 's/,/,\n/g' | head -2 | grep -v users | xargs | sed 's/,$//'; uname` SetEnv[postfix]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo0" Options[postfix]: growright,nopercent,unknaszero,integer,withzeroes,perhour YLegend[postfix]: E-mails ShortLegend[postfix]: E-mails LegendI[postfix]: Recebidos: LegendO[postfix]: Recusados: Legend1[postfix]: Fluxo de E-mails Recebidos Legend2[postfix]: Fluxo de E-mails Recusados MaxBytes[postfix]: 1000000 Title[postfix]: Análise de E-mails Processados
Depois de perceber que não preciso de um sistema SNMP para utilizar o mrtg, eu expandi meus horizontes para idéias também fora do convencional… tal qual como observar a variação da temperatura em São Paulo, que atua em conjunção na análise da temperatura do servidor.
Podemos observar até a flutuação do dólar!! 😆