Com o lançamento do encurtador eri.cx, alguns novos desafios vão surgindo como o gerenciamento do mesmo.  Apesar das limitações, gosto de utilizar o MRTG para monitorar máquinas, ainda mais quando não posso demandar muito tempo administrando as mesmas.

Existem inúmeras ferramentas de monitração, como Nagios, mas nada é tão simples quanto o MRTG.  Mesmo tendo sido criado pra tráfego de rede via snmp, qualquer coisa pode ser monitorada por ele, sabendo que a aquisição de dados ocorre a cada 5 minutos somente.  

Se eu precisasse de algo com menor tempo ou maior granularidade, com certeza mudaria pra RRDtool.  Mas isso já daria muito mais trabalho e iria de encontro ao meu princípio de manter a coisa simples.

Pois eu tenho um script bem antigo, em Python, que gera a saída formatada para uso no MRTG pra monitorar qualquer coisa.  De discos à carga do sistema.  Basicamente a saída é:

INPUT
OUTPUT
UPTIME
HOSTNAME

Pra casos como o disco, pode-se usar tanto a quantidade de espaço livre quanto ocupado pra INPUT e OUTPUT.  Ou deixar INPUT e OUTPUT iguais, mostrando a quantidade de disco usado, por exemplo, em porcentagem.  Isso somente pra ilustrar os muitos usos do MRTG.  Como exemplo, logo abaixo, como configurar o MRTG para monitorar a carga do sistema, através da saída do comando "uptime".  Uma vez que MRTG não monitora números flutuantes, os valores são multiplicados por 100.

 


Target[load]: `/home/helio/bin/system.py load`
Options[load]: gauge,noinfo, nopercent, growright, unknaszero, nobanner
MaxBytes[load]: 2000
Title[load]: System load (100x)
PageTop[load]: <H1>System load (100x)</H1>
 <TABLE>
 <TR><TD>System:</TD><TD>eri.cx</TD></TR>
 <TR><TD>Maintainer:</TD><TD>Helio Loureiro</TD></TR>
 <TR><TD>Interface:</TD><TD>System load (10x)</TD></TR>
 <TR><TD>IP:</TD><TD>none</TD></TR>
 <TR><TD>Max wan traffic:</TD>
 <TD>2 Mbps</TD></TR>
 </TABLE>
YLegend[load]: System load (10x)
ShortLegend[load]: load (10x)

Na monitoração do eri.cx, acabei com uma imagem do site parecida com essa abaixo:

A finalidade desse artigo não é entrar muito a fundo na questão de configuração do MRTG ou de scripts de monitoração, mas discutir sobre a limitação de página criada pelo MRTG.  E como resolvi isso.  Como é possível notar, o MRTG não se integrou ao design da página corretamente pois não existem muitas opções pra adicionar CSS ou javascript no mesmo.

Na configuração do MRTG, adicionei apenas as entradas abaixo:


Extension[_]: php
AddHead[_]: <!--?php // Start YOURLS engine
 require_once( dirname(dirname(__FILE__)).'/includes/load-yourls.php' );
 require(dirname(dirname(__FILE__)).'/user/config.php' );
 yourls_html_head();
?--> <p><br> </p> <div align="center">Change already begun<br> <br> <br> <span style="font-weight: bold;" mce_style="font-weight: bold;"> PageFoot[_]: <br> </span></div> <p><br> </p> <p><br> </p> <--?php yourls_html_footer(); ?-->
Que são as mesmas que utilizo em todas as página para manter o mesmo estilo.  Só que o MRTG adiciona essas entradas no meio da página, dentro de um <BODY></BODY>.  Por isso o resultado ficou tão ruim.

Para solucionar isso, alterei a saída para:

Extension[_]: txt

removendo todo o restante.  Em seguida fiz uma alteração no código da página em PHP, para incluir o conteúdo do arquivo gerado:


<?php
$target = "load.txt";
$FD = fopen($target, "r");
$DATA = fread($FD, filesize($target));
fclose($FD);
#echo $DATA;
$status = 0;
$content = explode("\n", $DATA);
foreach ($content as $line) {
    if (ereg("<body>", $line)) {
        $status++;
    }
    if (ereg("</body>", $line)) {
        $status = 0;
    }
    if ($status) {
        echo $line."\n";
    }
}
?>

Isso fez com que a página gerada pelo MRTG ficasse dentro do PHP corretamente.  Como pode ser visto abaixo: