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:

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.