Gerenciando redes com Perl e SNMP

Muitas empresas utilizam softwares de código aberto nas mais diversas atividades. Em minha carreira deparei-me com sistemas de gerência de rede que não atendiam as necessidades do cliente. Minha intenção aqui é demonstrar de forma prática como o SNMP funciona, como entender as MIBs e principalmente, como usar o Perl para melhorar os sistemas de gerência, ou mesmo, criar o seu próprio.

[ Hits: 50.449 ]

Por: Perfil removido em 23/03/2010


O que você deve saber sobre MIBs



O código abaixo é a representação do objeto 1.3.6.1.2.1.1.3 - ou iso.org.dod.internet.mgmt.mib-2.system.sysUpTime - de um arquivo MIB II. Este objeto permite que obtenhamos o tempo em que um sistema está operacional, ou seja, o SysUpTime de um elemento.

1  sysUpTime OBJECT-TYPE
2  SYNTAX Time Ticks
3  MAX-ACCESS Read Only
4  STATUS Current
5  DESCRIPTION  
6   The time (in hundredths of a second) since the
7   network management portion of the system was last
8   re-initialized.  
9   ::= { system 3 }
10

As MIBs são escritas em ASN.1 (Abstract Syntax Notation 1). O ASN.1 é mantido pela ISO e utilizada para as mais diversas finalidades, desde descrever Controle Aéreo até a sua placa de rede. O ASN.1 é uma especificação muito extensa e queremos aqui passar apenas o que você necessita para melhorar sua habilidades de administrador de uma rede.

Observe que o documento é estruturado. A seção DESCRIPTION, na linha 5, é a mais interessante para os administradores pois ela diz o que este objeto faz. Neste caso, como já dissemos ela retorna o tempo, em centésimos de segundos desde a última inicialização do sistema. Na terceira linha temos o MAX-ACCESS. Este define a ação que o administrador pode tomar com o objeto. Pode ser "read-only", "read-write", "read-create", "not-accessible" e "accessible-for-notify". A segunda linha apresenta a SYNTAX, que nada mais é que o tipo de dados que recebemos ou devemos usar para configurar o objeto. A lista de tipos é extensa, mas podemos destacar como principais os descritos na tabela:

Tipo de DadoDescrição
OBJECT IDENTIFIER Notação formada por uma sequência de números decimais separados por ponto que representa o objeto dentro da árvore de objetos. No nosso exemplo o objetct-type é 1.3.6.1.2.1.1.3 que é traduzido para sysUpTime.
INTEGER Valor numérico inteiro que pode ser utilizado para representar estados (0 = "down", 1= "up", 3 = "dormant") ou valores quantitativos como número de bytes transmitidos.
OCTET STRING String de bytes. Pode ser utilizada para representar, por exemplo, caracteres ASCII
IpAdress e NetworkAdresso Representação de endereços IPv4. As versões 1 e 2 do SNMP não suportam o IPv6
Counter e Gauge São contadores. A diferença é que o Gauge aceita valores crescentes e decrescentes enquanto o Counter aceita apenas valores crescentes.
TimeTicks Utilizado para medir tempo.
"Sequence" e "Sequence of" Sequence é formado por uma sequência dos tipos de dados definidos pela ASN.1. E "Sequence of" representa uma sequência de objetos.


O OBJECT IDENTIFIER ou OID é uma representação única de um elemento dentro da árvore de objetos gerenciáveis do elemento. A figura abaixo representa uma árvore de objetos de um arquivo MIB:
Linux: Gerenciando redes com Perl e SNMP
Se observarmos o início de um arquivo MIB vamos ter as seguintes informações:

SNMPv2-SMI DEFINITIONS ::= BEGIN

-- the path to the root

org            OBJECT IDENTIFIER ::= { iso 3 }  --  "iso" = 1
dod            OBJECT IDENTIFIER ::= { org 6 }
internet       OBJECT IDENTIFIER ::= { dod 1 }

directory      OBJECT IDENTIFIER ::= { internet 1 }

mgmt           OBJECT IDENTIFIER ::= { internet 2 }
mib-2          OBJECT IDENTIFIER ::= { mgmt 1 }
transmission   OBJECT IDENTIFIER ::= { mib-2 10 }
experimental   OBJECT IDENTIFIER ::= { internet 3 }

private        OBJECT IDENTIFIER ::= { internet 4 }
enterprises    OBJECT IDENTIFIER ::= { private 1 }

security       OBJECT IDENTIFIER ::= { internet 5 }

snmpV2         OBJECT IDENTIFIER ::= { internet 6 }

Observando o arquivo e a imagem gerada por um software gráfico para leitura de MIBs vemos que "ISO" é a raiz da árvore. Seu OID é 1. ORG é definido como {iso 3}. Então ele é o terceiro elemento da árvore, dentro de "ISO". Seu OID é "1.3". Assim vão se formando os OIDs dentro da árvore. mib-2 é definida como {mgmt 1}. Então, mib-2 é "1.3.6.1.2.1".

Para nós, administradores de rede, os objetos mais interessantes estão dentro de "MIB-2" e "PRIVATE". "MIB-2" contém objetos que nos permitem gerenciar características que são comuns a diversos equipamentos e servidores de rede. Os objetos dentro de "PRIVATE" permitem gerenciar características específicas definidas por fabricantes. Nas figuras abaixo vemos os objetos dentro de ISO.org.dod.mgmt.mib-2.ospf que nos permite gerências as características do protocolo de roteamento OSPF em roteadores de qualquer fabricante que tenha implementado a gerencia via SNMP.
Linux: Gerenciando redes com Perl e SNMP
Página anterior     Próxima página

Páginas do artigo
   1. Gerenciando a rede com Perl e SNMP
   2. O que você deve saber sobre MIBs
   3. Legal! E como eu faço para minha rede responder ao protocolo SNMP?
   4. Criando uma solução SNMP personalizada com o Perl
   5. Moral da história...
Outros artigos deste autor

Procurando software para gerenciar armazenamento... Pensou FreeNAS!

Transparência de janelas no KDE

Navegando na internet com (mais) segurança usando extensões no Mozilla/Firefox

Linux Hoje

Atualizar Switch 3Com 4400

Leitura recomendada

Impressão remota via WEB

Instalação de MRTG em ambiente Windows

Manipulação de sockets em Perl usando o IO::Socket::INET

Enviando notificações do Nagios para o MSN

Script Perl para consultas em base LDAP e/ou Active Directory

  
Comentários
[1] Comentário enviado por removido em 23/03/2010 - 09:37h

Se tiver dúvidas ou comentários pode me enviar um e-mail: thiago@nerdsland.net
Estamos às ordens!

[2] Comentário enviado por irado em 24/03/2010 - 17:55h

caramba, um artigo de fôlego, muito bem explicado. Parabéns, thiago.
ps: vou tomar coragem e experimentar - risos.

[3] Comentário enviado por removido em 24/03/2010 - 21:15h

Escrever também me deixou um pouco sem folego. Mas o feedback das pessoas tem sido positivo.
Muito obrigado.

[4] Comentário enviado por juniomundo em 25/03/2010 - 00:32h

Muito obrigado Thiago, foi de grande valia. Paz e saúde pra ti.

[5] Comentário enviado por removido em 25/03/2010 - 05:01h

Muito obrigado Júnio. É sempre um prazer ajudar.

[6] Comentário enviado por alexandre035 em 18/06/2011 - 15:35h

Excelente.

[7] Comentário enviado por j3f1nh0 em 21/09/2012 - 14:30h

Pow cara, muito bom! Meu ajudou muito para o meu TCC!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts