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();
?-->
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: