Embutindo MRTG em PHP
10 de Março de 2011, 0:00 - sem comentários aindaCom 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:
Goosfraba
27 de Fevereiro de 2011, 0:00 - sem comentários aindaJá faz algum tempo que comprei uma máquina da STI, Semp Toshiba, do tipo "computador popular". Comprei pelo preço baixo e pelo fato de vir com Linux instalado (um é causa o outro, efeito, mas não sei qual é qual). Isso uns 3 anos atrás. Nunca fui muito adepto de equipamento pré-montado, mas nessa época já estava meio cansado de ficar entrando em boca-de-hardware na Santa Ifigênia pra montar um computador decente.
A grande surpresa foi a qualidade do acabamento do computador: teclado excelente e macio, mouse ótico, entradas de leitor pra cartões de memória (todos os tipos até onde testei), caixas de som com amplificador energizado via USB, 2 GB de RAM, 250 GB de disco SATA e drive gravador de DVD. Realmente um hardware legal (lembre-se que isso foi há 3 anos atrás).
Na época veio com Insigne Linux instalado. Acho que durou uns 5 minutos rodando, o tempo de olhar a cara do sistema, até eu instalar um Ubuntu por cima. Desde então tenho usado o mesmo com Linux 32 bits.
No final do ano passado, por volta de meados de dezembro, só então notei uma mensagem de hardware no boot: EM64T. Sabia que era um Core 2 duo, mas achei que era só isso. Com algumas mensagens no Twitter, algums amigos confirmaram que a CPU era mesmo 64 bits, mas recebi muitas críticas negativas sobre o mesmo em Linux, principalmente em relação à crashes de aplicativos, principalmente em sites com flash. Resolvi então manter os 32 bits.
Recentemente li um artigo dizendo que o Linux fracassou miseravelmente na arquitetura 64 bits. O texto realmente está certo na abordagem do Linux em relação à nova arquitetura: dizia-se que o Windows estava fadado ao esquecimento dos 32 bits e que Linux iria dominar o desktop pois sua migração era tão fácil quanto a instalação em uma torradeira. E o que vemos atualmente é exatamente o oposto disso: várias recomendações pra se manter Linux em 32 bits por questões de estabilidade. No ponto em que li essa frase, confesso que senti uma pontada de culpa, pra não dizer vergonha.
Por um problema com um aplicativo de VPN da empresa, não posso migrar meu laptop pra 64 bits (processador Intel Core i3) e tenho de continuar envergonhado, mas já o meu desktop... resolvi arregaçar as mangas e instalar. Parti pra instalação do Ubuntu 10.10 em arquitetura AMD64.
Como sempre, dpkg salvou o dia com a lista de aplicativos previamente instalados (dpkg --get-selections >myselections
). A migração, ou reinstalação, ocorreu sem demais problemas. Um backup do /etc, bases do mysql e do diretório /root e rapidamente tive o sistema restaurado, e em 64 bits.
Para batizar a *nova* máquina dei o nome de goosfraba, em homenagem ao filme do "tratamento de choque" com Jack Nicholson e Adam Sandler (final meio infeliz, mas em geral é engraçado).
Até o momento a goosfraba tem funcionado melhor que na arquitetura 32 bits: mais rápido. Tenho a sensação de que estava dirigindo uma Audi A3 turbo, mas que antes só colocava até a 4a marcha. E agora vou até a 7a. Mas espero problemas com o Flash Player, pois sei que apesar do Linux não ter fracassado em 64 bits, também não foi o sucesso desejado.
Referências:
[1] What happened to "World Domination 201"? (ou Linux fracassou miseravelmente em 64 bits)
Goosfraba
27 de Fevereiro de 2011, 0:00 - sem comentários aindaJá faz algum tempo que comprei uma máquina da STI, Semp Toshiba, do tipo "computador popular". Comprei pelo preço baixo e pelo fato de vir com Linux instalado (um é causa o outro, efeito, mas não sei qual é qual). Isso uns 3 anos atrás. Nunca fui muito adepto de equipamento pré-montado, mas nessa época já estava meio cansado de ficar entrando em boca-de-hardware na Santa Ifigênia pra montar um computador decente.
A grande surpresa foi a qualidade do acabamento do computador: teclado excelente e macio, mouse ótico, entradas de leitor pra cartões de memória (todos os tipos até onde testei), caixas de som com amplificador energizado via USB, 2 GB de RAM, 250 GB de disco SATA e drive gravador de DVD. Realmente um hardware legal (lembre-se que isso foi há 3 anos atrás).
Na época veio com Insigne Linux instalado. Acho que durou uns 5 minutos rodando, o tempo de olhar a cara do sistema, até eu instalar um Ubuntu por cima. Desde então tenho usado o mesmo com Linux 32 bits.
No final do ano passado, por volta de meados de dezembro, só então notei uma mensagem de hardware no boot: EM64T. Sabia que era um Core 2 duo, mas achei que era só isso. Com algumas mensagens no Twitter, algums amigos confirmaram que a CPU era mesmo 64 bits, mas recebi muitas críticas negativas sobre o mesmo em Linux, principalmente em relação à crashes de aplicativos, principalmente em sites com flash. Resolvi então manter os 32 bits.
Recentemente li um artigo dizendo que o Linux fracassou miseravelmente na arquitetura 64 bits. O texto realmente está certo na abordagem do Linux em relação à nova arquitetura: dizia-se que o Windows estava fadado ao esquecimento dos 32 bits e que Linux iria dominar o desktop pois sua migração era tão fácil quanto a instalação em uma torradeira. E o que vemos atualmente é exatamente o oposto disso: várias recomendações pra se manter Linux em 32 bits por questões de estabilidade. No ponto em que li essa frase, confesso que senti uma pontada de culpa, pra não dizer vergonha.
Por um problema com um aplicativo de VPN da empresa, não posso migrar meu laptop pra 64 bits (processador Intel Core i3) e tenho de continuar envergonhado, mas já o meu desktop... resolvi arregaçar as mangas e instalar. Parti pra instalação do Ubuntu 10.10 em arquitetura AMD64.
Como sempre, dpkg salvou o dia com a lista de aplicativos previamente instalados (dpkg --get-selections >myselections
). A migração, ou reinstalação, ocorreu sem demais problemas. Um backup do /etc, bases do mysql e do diretório /root e rapidamente tive o sistema restaurado, e em 64 bits.
Para batizar a *nova* máquina dei o nome de goosfraba, em homenagem ao filme do "tratamento de choque" com Jack Nicholson e Adam Sandler (final meio infeliz, mas em geral é engraçado).
Até o momento a goosfraba tem funcionado melhor que na arquitetura 32 bits: mais rápido. Tenho a sensação de que estava dirigindo uma Audi A3 turbo, mas que antes só colocava até a 4a marcha. E agora vou até a 7a. Mas espero problemas com o Flash Player, pois sei que apesar do Linux não ter fracassado em 64 bits, também não foi o sucesso desejado.
Referências:
[1] What happened to "World Domination 201"? (ou Linux fracassou miseravelmente em 64 bits)
Meu comentário na G1
28 de Janeiro de 2011, 0:00 - sem comentários aindaDurante a Campus Party Brasil 2011 (#cpbr4) trabalhei como voluntário na área de Software Livre. Entre várias coisas legais que ocorreram, uma foi o fato do Maddog sempre ficar próximo de nós. E não foi que bem no dia que fiz uma piada com ele, falando que tinha lugar na bancada da Microsoft - esse dia estava difícil achar uma cadeira e cabo de rede sobrando, veio uma repórter do G1 e escreveu sobre ambos: Maddog e minha piada.
São os meus 5 minutos de fama geek.
Restart no Netgear com Python
27 de Janeiro de 2011, 0:00 - sem comentários aindaComo alguém já disse antes: nem todo restart é bom.
Mas infelizmente isso é necessário em alguns momentos. E meu roteador wireless Netgear WGR614 v7 chegou nesse ponto. Diariamente ele exige um leve "restart" pra poder funcionar direito na parte wireless, do contrário nada consegue se conectar nele: notebook, netbook, xbox360, celulares...
Deve ser alguma feature chinesa pois todos os produtos de lá padecem do mesmo mal, que sempre começa a aparecer depois de mais de 1 ano de uso. Deve ser uma estratégia de marketing pra nos forçar a fazer um upgrade. Igual ao Windows.
Mas voltando ao problema e sua solução, resolvi partir pra um restart automático (restart do bom, pra deixar claro). Então primeiramente descobri que o roteador faz um restart ao salvar as configurações de wireless. Em seguinda utilizei o Add-on do firefox, Live HTTP Headers, que ajudou a capturar os dados enviados ao equipamento:
POST /wlg_adv.cgi HTTP/1.1
Host: 192.168.34.1
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://192.168.34.1/WLG_adv.htm
Authorization: Basic ZnVjazp5b3U=
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
enable_ap=enable_ap&ssid_bc=ssid_bc&enable_wmm=0&Apply=Apply
O router exige autenticação, o que pode ser visto pela entrada "Authorization: Basic ZnVjazp5b3U=", que não usa criptografia mas um encode de base 64.
Então criei um script pra fazer o trabalho sujo e enviar os mesmos dados ao roteador, mas em Python.
#! /usr/bin/env python
# Script to restart daily my wireless router
# by Helio Loureiro
import httplib
import base64
import urllib
from time import ctime
user = "admin"
passw = "password"
host = "192.168.0.1"
def GetAuth(user = "user", passw = "passwd"):
auth = user + ":" + passw
return base64.encodestring(auth)[:-1]
headers = {
"Host" : host ,
"User-Agent" : "Mozilla/5.0 (Python)",
"Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ,
"Accept-Language" : "pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3",
"Accept-Encoding" : "gzip,deflate",
"Accept-Charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
"Referer" : "http://192.168.34.1/WLG_adv.htm" ,
"Authorization" : "Basic " + GetAuth(user, passw),
"Content-Type" : "application/x-www-form-urlencoded"
}
post_params = {
"enable_ap" : "enable_ap" ,
"ssid_bc" : "ssid_bc",
"enable_wmm" : "0",
"Apply" : "Apply"
}
params = urllib.urlencode(post_params)
web = httplib.HTTPConnection(host)
web.request("POST", "/wlg_adv.cgi", params, headers)
response = web.getresponse()
if (response.status == 200):
print "[" + ctime() + "] Wireless router restarted successfully"
else:
print "[" + ctime() + "] Restart FAILED"
data = response.read()
web.close()
Os dados necessários são usuário, senha e IP do roteador wireless (user, passw e host). Adicionando o script à crontab, o roteador será reiniciado diariamente, aumentando um pouco mais a longevidade de tal produto Chinês.