Arquivo da Categoria ‘SNMP’

MRTG em 5 minutos no Debian

quarta-feira, 23 de setembro de 2009

Eu sempre gosto de instalar um MRTG pra medir a velocidade do link, na verdade não para medir, por que isso eu posso fazer com o bmon ou iptraf, mas pra ver o gráfico que ele gera, é mais visual na minha opinião.
De tanto eu instalar instalar o MRTG, eu já acho automático, e faço isso em 5 minutos, então vou compartilhar com vocês, como faço, talvez alguém ache útil.

Lembro que resolvi fazer este post depois que instalei mais uma vez, e por que eu gosto do MRTG.

O que vou mostrar nessa instalação mostra em gráficos somente o tráfego de rede nas interfaces de rede, mas ele pode mostrar muito mais coisas, extraídas via SNMP.

Esta dica funciona em Debian e derivados.

Espero também que esteja com seu sources.list configurado adequadamente.

Então mãos a obra!!!!

Instalar o apache2, snmp e o mrtg:

aptitude install mrtg snmp snmpd apache2 -y

Edite /etc/snmpd.conf  e comente a linha 61 e descomente a 62:

#com2sec paranoid default                  public

com2sec readonly default                     public

Feito isso reiniciar o snmp:

/etc/init.d/snmpd restart

Criar o arquivo de configuração do mrtg:

cfgmaker public@localhost > /etc/mrtg.cfg

Editar o mrtg.cfg  e descomentar a linha 17:

Options[_]: bits,growright

Crie o diretório do mrtg no DocumentRoot do servidor web que instalamos:

mkdir /var/www/mrtg

Mude o dono do diretório para o www-data:

chow www-data /var/www/mrtg

Crie o arquivo index.html para visualizar os gráficos:

indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

Execute o mrtg:

env LANG=C /usr/bin/mrtg

Prontinho, só acessar sua página com os gráficos do mrtg:

http://ip.da.sua.máquina/mrtg/

Não se preocupe em criar agendamento para execução do MRTG no crontab por que quando você instala ele já cria este agendamento pra você, por padrão ele vai criar os gráficos de 5 em 5 minutos.

  • Google Bookmarks
  • Technorati Favorites
  • Twitter
  • Facebook
  • Google Buzz
  • LinkedIn
  • FriendFeed
  • Identi.ca
  • Orkut
  • Tumblr
  • Delicious
  • Reddit
  • WordPress
  • Share/Bookmark

Obtendo dados via SNMP

domingo, 19 de julho de 2009

Olá pessoal,

Vira e mexe eu vejo a questão, recorrente, sobre como obter OID’s, MIB’s e dados vi snmp.
O lance é o seguinte, sem entender pelo menos o mínimo é muito complicado realmente, extrair dados via snmp.
Então vou colocar aqui uma dica de como extrair o mínimo para você configurar os seus itens no zabbix com o snmp.

1.

snmpwalk – retrieve a subtree of management values using SNMP GETNEXT requests

2.

snmpget – communicates with a network entity using SNMP GET requests

Com estes dois programinhas que fazem parte do pacote net-snmp* (RHEL based) e snmp* (Debian based), fica muito tranquilo configurar os itens.

O que você tem que saber é simplesmente o IP do seu equipamente e a comunidade com previlégios de leitura que ele usa para ler os dados snmp.
Com estas informações montei duas linhas super simples para você obter os dados necessários.
O conjunto das informações obtidas de um equipamento via snmp é chamado de MIB, e cada informação desta é chamada de OID, então o que precisamos são dos OID’s.
Em equipamentos proprietários as MIB’s são fornecidos por seus fabricantes.

Como obter os OID’s ?

O snmpwalk pode nos ajudar:
Então vou dar um exemplo de como obter estas informações de um equpamento CISCO.

snmpwalk -On -v

No meu caso ficou assim:

snmpwalk -On -v 1 -c public 10.1.1.1 (ip de exemplo)

E obtive o seguinte resultaso (Como é muito extenso peguei somente uma parte)

[root@monitor ~]# snmpwalk -On -v 1 -c public 10.1.1.1

.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.9.1.696
.1.3.6.1.2.1.1.3.0 = Timeticks: (513090803) 59 days, 9:15:08.03
.1.3.6.1.2.1.1.4.0 = STRING:
.1.3.6.1.2.1.1.5.0 = STRING: SWT-05
.1.3.6.1.2.1.1.6.0 = STRING:
.1.3.6.1.2.1.1.7.0 = INTEGER: 2
.1.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.1.0 = INTEGER: 28
.1.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
.1.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
[...]

De posse destas informações vamos criar um arquivo com todas estas informações, pode demorar algum tempo dependendo do equipamento.

[root@monitor ~]# snmpwalk -On -v 1 -c public 10.1.1.1 | tee CISCO-snmpwalk-bruto

Este comando vai exibir na tela o resultado e criar o arquivo CISCO-snmpwalk com as infomrações.

Mas é meio obscuro saber o que significa cada número daquele, apesar de haver uma descrição na frente, muitas vezes é muito chato de “decifra-los”, e outras vezes até sabemos qual OID exatamente queremos, mas não sabemos exatamente qual sequencia numérica daquelas é a que queremos, até por que em cada equipamento ai ser diferente.

Para tornarmos isso um pouco menos traumático, tesmo o snmpget para nos ajudar!!!
Ele transforma estes números em algo mais “entendivel” (essa palavra eu inventei), mas o fato é que fica mais fácil de saber o que é cada item daquele.

.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen

O que nos interessa é tudo que está antes do “=”, então para usarmos o snmp get fariamos assim:

snmpget -On -v 1 -c public 10.1.1.1 .1.3.6.1.2.1.1.1.0

E o resultado seria este:

.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen

Ótimo, mas se analisarmos o arquivo que criamos, veremos que existem centenas, talvez milhares, destes OID’s, então para facilitar as coisas vamos separar somente o que nos interessa e colocar em outro aquivo.

Esta linha faz isso pra gente, o que fiz foi usar o “cut” para pegar tudo antes do ” ” (espaço).

snmpwalk -On -v 1 -c public 10.1.1.1 | cut -d ” ” -f1 | tee CISCO-snmpwalk

Beleza, se analizarmos o aquivo CISCO-snmp, que foi criado, veremos agora somente números, digo, OID’s.

[root@monitor ~]# less CISCO-snmpwalk
.1.3.6.1.2.1.1.1.0
.1.3.6.1.2.1.1.2.0
.1.3.6.1.2.1.1.3.0
.1.3.6.1.2.1.1.4.0
.1.3.6.1.2.1.1.5.0
.1.3.6.1.2.1.1.6.0
.1.3.6.1.2.1.1.7.0
[...]

Ótimo, agora para fazermos as coisas ficarem um pouco mais “entendiveis” (outra palavra inventada), vamos usar uma linha no bash para nos ajudar a automatizar, as coisas.
Eu não vou explicar a linha completa, mas ela le cada linha do arquivo e cria outro arquivo com as informações que precisamos.

A linha é esta:

[root@monitor ~]# for i in $(cat CISCO-snmpwalk); do snmpget -v 1 -c public 10.1.1.1 $i | tee CISCO-snmpget; done

Agora temos os dados que precisamos:

[root@monitor ~]# less CISCO-snmpget
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.696
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (513123093) 59 days, 9:20:30.93
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: SWT-05
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 2
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
IF-MIB::ifNumber.0 = INTEGER: 28
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.4 = INTEGER: 4

Bacaninha….. prontinho….. agora é só analizar o arquiv e saber qual é exatamente que você quer obter via snmp e usar os OID’s para obte-la.

Ps.: No ZABBIX isto é uma mão na roda…

Espero que tenha ajudado.

Ps2.: Veja também sobre snmptranslate…. Só uma palinha sobre ele com o mesmo OID:
[root@monitor ~]# snmptranslate .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0
[root@monitor ~]#

  • Google Bookmarks
  • Technorati Favorites
  • Twitter
  • Facebook
  • Google Buzz
  • LinkedIn
  • FriendFeed
  • Identi.ca
  • Orkut
  • Tumblr
  • Delicious
  • Reddit
  • WordPress
  • Share/Bookmark