{"id":851,"date":"2014-05-09T01:58:29","date_gmt":"2014-05-09T04:58:29","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=851"},"modified":"2014-05-09T01:58:29","modified_gmt":"2014-05-09T04:58:29","slug":"mrtg-sem-snmp-monitoramento-simplificado","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=851","title":{"rendered":"MRTG sem SNMP: Monitoramento simplificado"},"content":{"rendered":"<p style=\"color: #000000;\">Esta \u00e9 uma atualiza\u00e7\u00e3o do meu artigo original sobre o assunto, publicado em mar\u00e7o de 2000 no br-linux.org. A id\u00e9ia \u00e9 mostrar como \u00e9 f\u00e1cil monitorar qualquer vari\u00e1vel num\u00e9rica do seu sistema (exemplos: uso de banda de rede, uso do disco, quantidade de usu\u00e1rios conectados a um servidor) usando o MRTG em conjunto com pequenos scripts de aquisi\u00e7\u00e3o de dados &#8211; dispensando o protocolo SNMP e altera\u00e7\u00f5es de configura\u00e7\u00e3o. Claro que o SNMP tem seus usos, mas n\u00e3o h\u00e1 porque ativ\u00e1-lo onde n\u00e3o h\u00e1 necessidade&#8230;<\/p>\n<h3 style=\"color: #000000;\">MRTG sem SNMP: monitoramento simplificado<\/h3>\n<p style=\"color: #000000;\">\u00a0Augusto C. Campos &#8211; brain@matrix.com.br<\/p>\n<p style=\"color: #000000;\"><i>Nota: esta \u00e9 uma atualiza\u00e7\u00e3o feita no in\u00edcio de 2004 do meu artigo original sobre o assunto, publicado em mar\u00e7o de 2000 no br-linux.org.<\/i><!--more--><\/p>\n<p style=\"color: #000000;\"><b>MRTG<\/b><\/p>\n<p style=\"color: #000000;\"><img decoding=\"async\" src=\"http:\/\/br-linux.org\/tutoriais\/mrtg-graf.gif\" alt=\"exemplo de gr\u00e1fico do MRTG\" align=\"right\" hspace=\"12\" \/>O MRTG (www.mrtg.org) \u00e9 um software livre que facilita enormemente a tarefa de acompanhar o funcionamento do seu sistema. Embora o seu foco seja o acompanhamento de componentes de rede atrav\u00e9s do protocolo SNMP, voc\u00ea pode muito bem utilizar este software para verificar o funcionamento do seu computador dom\u00e9stico ou esta\u00e7\u00e3o de trabalho mesmo sem instalar o suporte a SNMP &#8211; basta usar a sua interface com scripts shell.<\/p>\n<p style=\"color: #000000;\">A imagem que voc\u00ea v\u00ea ao lado \u00e9 do conjunto de gr\u00e1ficos\u00a0<i>default<\/i>\u00a0gerados para uma interface de rede local (no exemplo, um modem &#8211; ppp0) mostrando a quantidade de bytes transmitida e recebida nas \u00faltimas 24 horas, na \u00faltima semana, no \u00faltimo m\u00eas e no \u00faltimo ano.<\/p>\n<p style=\"color: #000000;\">O site do MRTG tem muitos exemplos de como monitorar roteadores e outros equipamentos de rede com suporte a SNMP, mas muita gente procura informa\u00e7\u00f5es sobre a interface do MRTG com programas externos, sem precisar de protocolos especializados em monitoramento nem de altera\u00e7\u00f5es na configura\u00e7\u00e3o de seus equipamentos. E isso se explica pela simplicidade com que \u00e9 poss\u00edvel construir um script de monitoramento de qualquer coisa (uso de banda de rede, uso do disco, quantidade de usu\u00e1rios conectados a um sistema, etc.) e integr\u00e1-lo ao MRTG.<\/p>\n<p style=\"color: #000000;\">Nesta dica demonstrarei como utilizar o MRTG para gerar um gr\u00e1fico do uso de sua CPU, ocupa\u00e7\u00e3o da mem\u00f3ria e tr\u00e1fego de dados em uma conex\u00e3o PPP. As explica\u00e7\u00f5es sobre o funcionamento do software ficam para outra ocasi\u00e3o, ou para o site oficial do MRTG (www.mrtg.org). Se voc\u00ea tem alguma no\u00e7\u00e3o de programa\u00e7\u00e3o shell, n\u00e3o ter\u00e1 dificuldade em extrapolar os exemplos e monitorar o que quiser e puder.<\/p>\n<p style=\"color: #000000;\">Para completar, montaremos uma p\u00e1gina HTML bastante interessante, incluindo os gr\u00e1ficos gerados pelo MRTG, para deixar como abertura do seu navegador.<\/p>\n<p style=\"color: #000000;\">\n<b>M\u00e3os \u00e0 obra<\/b><\/p>\n<p style=\"color: #000000;\">Em primeiro lugar, \u00e9 preciso ter o pacote MRTG instalado (todas as distribui\u00e7\u00f5es comerciais de Linux o incluem), e o seu kernel deve ter suporte ao pseudo-filesystem<tt>\/proc<\/tt>\u00a0habilitado e em opera\u00e7\u00e3o (todas as distribui\u00e7\u00f5es de Linux habilitam por default), pois iremos coletar dados diretamente de seus componentes.<\/p>\n<p style=\"color: #000000;\">Nossos arquivos de exemplo ser\u00e3o instalados no diret\u00f3rio \/home\/brain\/mrtg, mude de acordo com a sua conveni\u00eancia.<\/p>\n<p style=\"color: #000000;\"><b>Os scripts de aquisi\u00e7\u00e3o de dados<\/b><\/p>\n<p style=\"color: #000000;\">Os scripts para interface com o MRTG se caracterizam por sempre retornarem dois valores na sa\u00edda padr\u00e3o, um em cada linha, a cada vez que s\u00e3o executados. Estes valores correspondem \u00e0s vari\u00e1veis (sempre duas)<br \/>\nmonitoradas pelo script.<\/p>\n<p style=\"color: #000000;\">O script abaixo, bastante simples, extrai dados sobre o tr\u00e1fego na interface passada como par\u00e2metro no momento de sua execu\u00e7\u00e3o (exemplo: ppp0, eth0&#8230;). Grave-o com o nome de mrtgstats-net.sh, e torne-o execut\u00e1vel com o comando\u00a0<tt>chmod 755 \/home\/brain\/mrtg\/mrtgstats-net.sh<\/tt><\/p>\n<p style=\"color: #000000;\"><tt><br \/>\n#!\/bin\/sh<br \/>\n# mrtgstats-net.sh - Augusto Campos 2004<br \/>\nawk '<br \/>\n\/'$1':\/ {<br \/>\n$0=substr($0,index($0,\":\")+1);<br \/>\nprint $1;print $9<br \/>\n}<br \/>\n' \/proc\/net\/dev<br \/>\n<\/tt><\/p>\n<p style=\"color: #000000;\">\nEste segundo script extrai informa\u00e7\u00f5es sobre a carga da CPU e o uso da mem\u00f3ria, transforma em percentual e repassa ao MRTG. Grave-o com o nome de mrtgstats-cpu.sh, e torne-o execut\u00e1vel com o comando<tt>chmod 755 \/home\/brain\/mrtg\/mrtgstats-cpu.sh<\/tt><\/p>\n<p style=\"color: #000000;\"><tt><br \/>\n#!\/bin\/sh<br \/>\nunset LANG<br \/>\nmem=$(\/usr\/bin\/free|grep ^-)<br \/>\nload=$(cat \/proc\/loadavg)<br \/>\n\/bin\/awk -v load=\"$load\" -v mem=\"$mem\" '<br \/>\nBEGIN {<br \/>\nsplit(load,loadstats)<br \/>\nprint int(100*loadstats[2])<br \/>\nsplit(mem,memstats);<br \/>\nprint int(100*memstats[3]\/(memstats[3]+\\<br \/>\nmemstats[4]));<br \/>\n}'<br \/>\n<\/tt><\/p>\n<p style=\"color: #000000;\">\nAgora, trate de criar um arquivo de configura\u00e7\u00e3o para o MRTG, e grave-o com o nome de mrtg.conf:<\/p>\n<p style=\"color: #000000;\"><tt><br \/>\nWorkDir: \/home\/brain\/mrtg<\/tt><\/p>\n<p>Target[ppp0]: `\/home\/brain\/mrtg\/mrtgstats-net.sh ppp0`<br \/>\nTitle[ppp0]:&#8221;Tr\u00e1fego no modem &#8211; ppp0&#8243;<br \/>\nMaxBytes[ppp0]:75000<br \/>\nPageTop[ppp0]: &lt;h1&gt;Tr\u00e1fego de dados no modem local&lt;\/h1&gt;<br \/>\nOptions[ppp0]: growright,bits,noinfo<\/p>\n<p>Target[eth0]: `\/home\/brain\/mrtg\/mrtgstats-net.sh eth0`<br \/>\nTitle[eth0]:&#8221;Tr\u00e1fego na placa de rede &#8211; eth0&#8243;<br \/>\nMaxBytes[eth0]:1400000<br \/>\nPageTop[eth0]: &lt;h1&gt;Tr\u00e1fego de dados na placa de rede&lt;\/h1&gt;<br \/>\nOptions[eth0]: growright,bits,noinfo<\/p>\n<p style=\"color: #000000;\"><tt>Target[perf]:`\/home\/brain\/mrtg\/mrtgstats-cpu.sh`<br \/>\nTitle[perf]:\"Carga da CPU e Uso da Mem\u00f3ria\"<br \/>\nPageTop[perf]:\"&lt;h1&gt;Carga da CPU e Uso da Mem\u00f3ria&lt;\/h1&gt;\"<br \/>\nOptions[perf]: growright,noinfo,gauge<br \/>\nYLegend[perf]: Percentual<br \/>\nShortLegend[perf]: %<br \/>\nMaxBytes[perf]: 100<br \/>\nLegend1[perf]: Carga da CPU<br \/>\nLegend2[perf]: Uso da mem\u00f3ria real<br \/>\nLegendI[perf]: Carga<br \/>\nLegendO[perf]: Mem<br \/>\n<\/tt><\/p>\n<p style=\"color: #000000;\">Para testar o MRTG manualmente, basta execut\u00e1-lo passando como par\u00e2metro o caminho completo do seu arquivo de configura\u00e7\u00e3o, assim:\u00a0<tt>mrtg \/home\/brain\/mrtg\/mrtg.conf<\/tt><\/p>\n<p style=\"color: #000000;\">Nos dois primeiros testes \u00e9 normal a exibi\u00e7\u00e3o de mensagens relativas ao fato de os arquivos de dados ainda estarem vazios. A partir da terceira execu\u00e7\u00e3o o programa deve passar a ser &#8220;silencioso&#8221;.<\/p>\n<p style=\"color: #000000;\">Tudo est\u00e1 pronto! Agora inclua na sua\u00a0<a class=\"ref\" href=\"http:\/\/brlinux.linuxsecurity.com.br\/artigos\/dicas_cron.htm\">crontab<\/a>\u00a0a linha para executar o MRTG a cada 5 minutos, passando como par\u00e2metro o nome do arquivo de configura\u00e7\u00e3o que voc\u00ea criou, conforme o exemplo:<\/p>\n<p style=\"color: #000000;\"><tt><br \/>\n*\/5 * * * * \/usr\/bin\/mrtg \/home\/brain\/mrtg\/mrtg.conf<br \/>\n<\/tt><\/p>\n<p style=\"color: #000000;\">\nAp\u00f3s 5 minutos voc\u00ea poder\u00e1 ver o in\u00edcio dos seus gr\u00e1ficos se formando nos arquivos em formato html que ser\u00e3o criados no diret\u00f3rio \/home\/brain\/mrtg. Antes de 5 minutos, os dados aparecer\u00e3o zerados, mesmo que voc\u00ea execute v\u00e1rias vezes o mrtg manualmente &#8211; isto \u00e9 uma consequ\u00eancia do modo como ele calcula suas estat\u00edsticas.<\/p>\n<p style=\"color: #000000;\">\n<b>Usando em uma p\u00e1gina de abertura do seu navegador<\/b><\/p>\n<p style=\"color: #000000;\">\nNo ano 2000, quando escrevi a primeira vers\u00e3o deste tutorial, minha p\u00e1gina de abertura do navegador web era<br \/>\no arquivo HTML copiado abaixo (com o nome de abertura.html), contendo um formul\u00e1rio para pesquisa r\u00e1pida no Google, link para os sites que eu visitava com mais frequ\u00eancia, e inclus\u00e3o de duas imagens geradas automaticamente pelo MRTG. Para usar o meu arquivo, tudo o que voc\u00ea tem que fazer \u00e9 col\u00e1-lo em um arquivo abertura.html no seu diret\u00f3rio do mrtg, e depois edit\u00e1-lo at\u00e9 ficar a seu gosto.<\/p>\n<p style=\"color: #000000;\">\nVeja a listagem do abertura.html:<\/p>\n<ul style=\"color: #000000;\">\n<\/ul>\n<ul style=\"color: #000000;\"><\/ul>\n<p>&lt;head&gt; &lt;title&gt;Augusto C. Campos&lt;\/title&gt; &lt;\/head&gt;<br \/>\n&lt;body bgcolor=black text=yellow link=white<br \/>\nvlink=white&gt;<\/p>\n<ul style=\"color: #000000;\">\n<\/ul>\n<ul style=\"color: #000000;\"><\/ul>\n<p>&lt;h1 align=center&gt;Augusto C\u00e9sar Campos&lt;\/h1&gt; &lt;table<br \/>\nborder=0 width=100%&gt; &lt;tr&gt;&lt;td&gt;<\/p>\n<ul style=\"color: #000000;\">\n<\/ul>\n<ul style=\"color: #000000;\"><\/ul>\n<p>&lt;form action=http:\/\/www.google.com\/search<br \/>\nmethod=get name=f&gt; &lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;input<br \/>\ntype=text value=&#8221;&#8221; framewidth=4 name=q size=55<br \/>\nmaxlength=256&gt; &lt;font size=-1<br \/>\nface=arial,sans-serif&gt; &lt;br&gt;&lt;center&gt;&lt;input<br \/>\ntype=radio name=lr value=&#8221;&#8221; checked&gt;Pesquisar na<br \/>\nWeb &lt;input type=radio name=lr value=lang_pt<br \/>\n&gt;Pesquisar p\u00e1ginas em Portugu\u00eas&lt;\/center&gt; &lt;\/font&gt;<br \/>\n&lt;\/td&gt;&lt;td&gt; &lt;input name=btnG type=submit<br \/>\nvalue=&#8221;Pesquisa Google&#8221;&gt; &lt;br&gt;&lt;input name=btnI<br \/>\ntype=submit value=&#8221;Busca Direta&#8221;&gt;&lt;input name=hl<br \/>\ntype=hidden value=pt&gt; &lt;\/td&gt;&lt;\/tr&gt;&lt;\/table&gt; &lt;\/form&gt;<\/p>\n<ul style=\"color: #000000;\">\n<\/ul>\n<ul style=\"color: #000000;\"><\/ul>\n<p>&lt;\/td&gt;&lt;td&gt; &lt;a<br \/>\nhref=http:\/\/br-linux.org\/&gt;br-linux.org&lt;\/a&gt; &lt;br&gt;&lt;a<br \/>\nhref=http:\/\/forum.br-linux.org&gt;F\u00f3rum&lt;\/a&gt;<br \/>\nhref=http:\/\/slashdot.org\/&gt;Slashdot&lt;\/a&gt;<br \/>\n&lt;br&gt;&lt;a href=http:\/\/pontobr.org\/&gt;PontoBR&lt;\/a&gt;<br \/>\n&lt;br&gt;&lt;a href=http:\/\/linuxtoday.com\/&gt;LinuxToday&lt;\/a&gt;<br \/>\n&lt;br&gt;&lt;a href=http:\/\/freshmeat.net\/&gt;Freshmeat&lt;\/a&gt;<br \/>\n&lt;\/td&gt;&lt;\/tr&gt;<\/p>\n<ul style=\"color: #000000;\">\n<\/ul>\n<ul style=\"color: #000000;\"><\/ul>\n<p>&lt;tr&gt;&lt;td colspan=2&gt;&lt;center&gt; &lt;p&gt;&lt;h1&gt;Uso da CPU e<br \/>\nmem\u00f3ria nas \u00faltimas 24 horas&lt;\/h1&gt; &lt;img<br \/>\nsrc=perf-day.png&gt; &lt;br&gt;(em verde: CPU ocupada. Em<br \/>\nazul: mem\u00f3ria ocupada) &lt;h1&gt;Uso do modem nas<br \/>\n\u00faltimas 24 horas&lt;\/h1&gt; &lt;img src=ppp0-day.png&gt;<br \/>\n&lt;br&gt;(em verde: tr\u00e1fego recebido. Em azul: tr\u00e1fego<br \/>\nenviado) &lt;\/center&gt;&lt;\/td&gt;&lt;\/tr&gt; &lt;\/table&gt;<\/p>\n<ul style=\"color: #000000;\">\n<\/ul>\n<ul style=\"color: #000000;\"><\/ul>\n<p>&lt;\/body&gt;<\/p>\n<p style=\"color: #000000;\">\n<p style=\"color: #000000;\">\n<b>Conclus\u00e3o<\/b><\/p>\n<p style=\"color: #000000;\">Com estes exemplos voc\u00ea poder\u00e1 monitorar alguns aspectos importantes do seu sistema, e quem sabe se inspirar para criar scripts que monitorem outros itens. Para saber mais detalhes sobre o MRTG, n\u00e3o deixe de vistar o\u00a0<a href=\"http:\/\/www.mrtg.org\/\" target=\"_blank\">site oficial da ferramenta<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta \u00e9 uma atualiza\u00e7\u00e3o do meu artigo original sobre o assunto, publicado em mar\u00e7o de 2000 no br-linux.org. A id\u00e9ia \u00e9 mostrar como \u00e9 f\u00e1cil monitorar qualquer vari\u00e1vel num\u00e9rica do seu sistema (exemplos: uso de banda de rede, uso do disco, quantidade de usu\u00e1rios conectados a um servidor) usando o MRTG em conjunto com pequenos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[455,1,42,51,514,68,501],"tags":[179,584,585,586],"class_list":["post-851","post","type-post","status-publish","format-standard","hentry","category-apache2","category-viazap","category-leitura-recomendada","category-linux-linuxrs","category-programacao","category-redes-2","category-shell-script","tag-monitoramento","tag-mrtg","tag-sem-snmp","tag-simplificado"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=851"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/851\/revisions"}],"predecessor-version":[{"id":852,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/851\/revisions\/852"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}