FreeBSD - Configuração do Net-SNMP

Configuração do Net-SNMP.

[ Hits: 17.725 ]

Por: DOUGLAS BAPTISTA DE GODOY em 08/10/2012 | Blog: http://lattes.cnpq.br/5910037024783988


Net-SNMP



O Simple Network Management Protocol (SNMP), é um protocolo usado para monitorar a saúde e o bem-estar de equipamentos de rede (Ex.: roteadores) e equipamentos de informática.

Além de implementar um agente SNMP que permitirá gerenciar um host, o Net-SNMP também possui diversos aplicativos usados para implementar SNMP v1 , SNMP v2c e SNMP v3, usando ambos IPv4 e IPv6.

Portanto, o conjunto inclui as funções:
  • Recupera informações de um dispositivo SNMP, seja através de pedidos individuais (snmpget , snmpgetnext ), ou pedidos múltiplos ( snmpwalk , snmptable , snmpdelta);
  • Manipula as informações de configuração em um dispositivo SNMP (snmpset);
  • Recupera uma coleção fixa de informações de um dispositivo SNMP (snmpdf , snmpnetstat , snmpstatus);
  • Converte em formas numéricas e textuais de OIDs MIB, MIB e exibe o conteúdo e estrutura (snmptranslate);
  • Um navegador MIB gráfica ( tkmib ), utilizando Tk / Perl;
  • Uma aplicação daemon para receber notificações SNMP (snmptrapd). Notificações selecionadas podem ser registradas (para o syslog, o log de eventos NT, ou um arquivo de texto), e encaminhadas para outro sistema de gerenciamento SNMP, ou ainda passada para um aplicativo externo.

    Esta, possui um agente para responder às consultas de SNMP na gestão da informação (snmpd). Isso inclui suporte embutido para uma ampla gama de módulos de informações MIB, e pode ser estendido com módulos carregados dinamicamente, scripts externos e comandos.

Existe ainda uma biblioteca para o desenvolvimento de novas aplicações SNMP, com C e APIs Perl.

Adaptado e traduzido do site: http://www.net-snmp.org

Instalando o Net-SNMP

Para instalar o Net-SNMP, acesse o diretório:

# cd /usr/ports/net-mgmt/net-snmp

Configure as opções de compilação do Net-SNMP 5, com o comando:

# make config

Marque as opções apropriadas de acordo com sua necessidade no Net-SNMP 5.5_4.

Execute o comando de compilação e instalação do Net-SNMP, com o seguinte comando:

# make install clean

Depois de realizada a instalação, vamos habilitar o Net-SNMP. É preciso editar o arquivo "rc.conf", para que no momento em que o FreeBSD for reinicializado, o Net-SNMP carregue automaticamente:

# vi /etc/rc.conf

Adicione ao final do arquivo as linhas abaixo, depois salve o arquivo e saia.

Snmpd_enable="YES"
snmpd_flags="-a"
snmpd_conffile="/usr/local/share/snmp/snmpd.conf"


Agora, vamos configurar o Net-SNMP:

# cd /usr/local/share/snmp/
# cp snmpd.conf.example snmpd.conf


Neste momento, devemos limpar todo o conteúdo do arquivo "snmpd.conf" e adicionar somente o seguinte comando: rocommunity public

Logo após a execução destas configurações, é preciso inicializar o SNMP:

# /usr/local/etc/rc.d/snmpd start

Testando o SNMP

Para trabalhar com SNMP, devemos utilizar algumas ferramentas. Uma destas ferramentas é o snmptranslate, que é responsável por mostrar todos os objetos, juntamente com detalhes de sua definição na MIB (tipo de acesso, tipo de dado, OID textual, OID numérico):

# snmptranslate -Tp -OS -IR | more

Este exemplo mostra a identificação (OID numérico e textual) de todos os objetos de todas as MIBs implementadas pelo Net-Snmp.

# snmptranslate -Tl | more

Através de uma ferramenta do Net-SNMP, pode-se testar o agente simulando um gerente fazendo um pedido SNMP. Neste pedido é solicitado ao agente todas as informações de todos os objetos do grupo system da MIB-II.

Portanto, utilizou-se a versão 2 do protocolo SNMP (parâmetro –v 2c), a comunidade chamada public e o agente está executando no host localhost:

# snmpwalk -v 2c -c public localhost system

Confira a saída do comando:
SNMPv2-MIB::sysDescr.0 = STRING: FreeBSD platao 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Fri Feb 10 10:54:40 BRST 2012 root@platao:/usr/src/sys/i386/compile/KERNELMETG i386
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (6817) 0:01:08.17
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: platao
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (12) 0:00:00.12


Também podemos trabalhar com outros grupos e não somente com o grupo system, mas para se trabalhar com outros grupos, deve-se utilizar a ferramenta snmptranslate.

Nesta etapa, trabalharemos com o grupo interfaces:

# snmpwalk -v 2c -Os -c public localhost interfaces

Confira o resultado:
ifNumber.0 = INTEGER: 6
ifIndex.1 = INTEGER: 1
ifIndex.2 = INTEGER: 2
ifIndex.3 = INTEGER: 3
ifIndex.4 = INTEGER: 4
ifIndex.5 = INTEGER: 5
ifIndex.6 = INTEGER: 6
ifDescr.1 = STRING: usbus0
ifDescr.2 = STRING: em0
ifDescr.3 = STRING: em1
ifDescr.4 = STRING: plip0
ifDescr.5 = STRING: ipfw0
ifDescr.6 = STRING: lo0
ifType.1 = INTEGER: usb(160)
ifType.2 = INTEGER: ethernetCsmacd(6)
ifType.3 = INTEGER: ethernetCsmacd(6)
ifType.4 = INTEGER: para(34)
ifType.5 = INTEGER: ethernetCsmacd(6)
ifType.6 = INTEGER: softwareLoopback(24)
ifMtu.1 = INTEGER: 0
ifMtu.2 = INTEGER: 1500
ifMtu.3 = INTEGER: 1500
ifMtu.4 = INTEGER: 1500
ifMtu.5 = INTEGER: 65536
ifMtu.6 = INTEGER: 16384
ifSpeed.1 = Gauge32: 0
ifSpeed.2 = Gauge32: 1000000000
ifSpeed.3 = Gauge32: 1000000000
ifSpeed.4 = Gauge32: 0
ifSpeed.5 = Gauge32: 10000000
ifSpeed.6 = Gauge32: 0
ifPhysAddress.1 = STRING:
ifPhysAddress.2 = STRING: 0:c:29:b7:42:e
ifPhysAddress.3 = STRING: 0:c:29:b7:42:18
ifPhysAddress.4 = STRING:
ifPhysAddress.5 = STRING:
ifPhysAddress.6 = STRING:
ifAdminStatus.1 = INTEGER: up(1)
ifAdminStatus.2 = INTEGER: up(1)
ifAdminStatus.3 = INTEGER: up(1)
ifAdminStatus.4 = INTEGER: down(2)
ifAdminStatus.5 = INTEGER: up(1)
ifAdminStatus.6 = INTEGER: up(1)
ifOperStatus.1 = INTEGER: down(2)
ifOperStatus.2 = INTEGER: up(1)
ifOperStatus.3 = INTEGER: up(1)
ifOperStatus.4 = INTEGER: down(2)
ifOperStatus.5 = INTEGER: down(2)
ifOperStatus.6 = INTEGER: up(1)
ifLastChange.1 = Timeticks: (0) 0:00:00.00
ifLastChange.2 = Timeticks: (0) 0:00:00.00
ifLastChange.3 = Timeticks: (0) 0:00:00.00
ifLastChange.4 = Timeticks: (0) 0:00:00.00
ifLastChange.5 = Timeticks: (0) 0:00:00.00
ifLastChange.6 = Timeticks: (0) 0:00:00.00
ifInOctets.1 = Counter32: 0
ifInOctets.2 = Counter32: 5100885
ifInOctets.3 = Counter32: 262496
ifInOctets.4 = Counter32: 0
ifInOctets.5 = Counter32: 0
ifInOctets.6 = Counter32: 73840
ifInUcastPkts.1 = Counter32: 0
ifInUcastPkts.2 = Counter32: 34491
ifInUcastPkts.3 = Counter32: 5331
ifInUcastPkts.4 = Counter32: 0
ifInUcastPkts.5 = Counter32: 0
ifInUcastPkts.6 = Counter32: 2062
ifInNUcastPkts.1 = Counter32: 0
ifInNUcastPkts.2 = Counter32: 0
ifInNUcastPkts.3 = Counter32: 0
ifInNUcastPkts.4 = Counter32: 0
ifInNUcastPkts.5 = Counter32: 0
ifInNUcastPkts.6 = Counter32: 0
ifInDiscards.1 = Counter32: 0
ifInDiscards.2 = Counter32: 0
ifInDiscards.3 = Counter32: 0
ifInDiscards.4 = Counter32: 0
ifInDiscards.5 = Counter32: 0
ifInDiscards.6 = Counter32: 0
ifInErrors.1 = Counter32: 0
ifInErrors.2 = Counter32: 0
ifInErrors.3 = Counter32: 0
ifInErrors.4 = Counter32: 0
ifInErrors.5 = Counter32: 0
ifInErrors.6 = Counter32: 0
ifInUnknownProtos.1 = Counter32: 0
ifInUnknownProtos.2 = Counter32: 0
ifInUnknownProtos.3 = Counter32: 0
ifInUnknownProtos.4 = Counter32: 0
ifInUnknownProtos.5 = Counter32: 0
ifInUnknownProtos.6 = Counter32: 0
ifOutOctets.1 = Counter32: 0
ifOutOctets.2 = Counter32: 61863
ifOutOctets.3 = Counter32: 136009
ifOutOctets.4 = Counter32: 0
ifOutOctets.5 = Counter32: 0
ifOutOctets.6 = Counter32: 73840
ifOutUcastPkts.1 = Counter32: 0
ifOutUcastPkts.2 = Counter32: 329
ifOutUcastPkts.3 = Counter32: 919
ifOutUcastPkts.4 = Counter32: 0
ifOutUcastPkts.5 = Counter32: 0
ifOutUcastPkts.6 = Counter32: 1033
ifOutNUcastPkts.1 = Counter32: 0
ifOutNUcastPkts.2 = Counter32: 0
ifOutNUcastPkts.3 = Counter32: 0
ifOutNUcastPkts.4 = Counter32: 0
ifOutNUcastPkts.5 = Counter32: 0
ifOutNUcastPkts.6 = Counter32: 0
ifOutDiscards.1 = Counter32: 0
ifOutDiscards.2 = Counter32: 0
ifOutDiscards.3 = Counter32: 0
ifOutDiscards.4 = Counter32: 0
ifOutDiscards.5 = Counter32: 0
ifOutDiscards.6 = Counter32: 0
ifOutErrors.1 = Counter32: 0
ifOutErrors.2 = Counter32: 0
ifOutErrors.3 = Counter32: 0
ifOutErrors.4 = Counter32: 0
ifOutErrors.5 = Counter32: 0
ifOutErrors.6 = Counter32: 0
ifOutQLen.1 = Gauge32: 0
ifOutQLen.2 = Gauge32: 0
ifOutQLen.3 = Gauge32: 0
ifOutQLen.4 = Gauge32: 0
ifOutQLen.5 = Gauge32: 0
ifOutQLen.6 = Gauge32: 0
ifSpecific.1 = OID: zeroDotZero
ifSpecific.2 = OID: zeroDotZero
ifSpecific.3 = OID: zeroDotZero
ifSpecific.4 = OID: zeroDotZero
ifSpecific.5 = OID: zeroDotZero
ifSpecific.6 = OID: zeroDotZero


Quando trabalha-se com o SNMP, pode-se fazer pedidos, assim como foi mostrado no exemplo anterior, onde foram pedidos informações do grupo interfaces. Mas neste momento, desejamos solicitar a descrição e o endereço físico de cada interface física presente na máquina.

# snmpget -v 2c -Os -c public localhost ifDescr.1 ifPhysAddress.1 ifDescr.

Veja o resultado:
2 ifPhysAddress.2 ifDescr.3 ifPhysAddress.3
ifDescr.1 = STRING: usbus0
ifPhysAddress.1 = STRING:
ifDescr.2 = STRING: em0
ifPhysAddress.2 = STRING: 0:c:29:b7:42:e
ifDescr.3 = STRING: em1
ifPhysAddress.3 = STRING: 0:c:29:b7:42:18


Até este momento, estamos coletando informações de um computador, que no caso é o localhost, mas com o SNMP podemos coletar informações de outros equipamentos, tais como: roteadores, switches, entre outros.

O exemplo abaixo, mostra a coleta de informações de um roteador wireless:

# snmpwalk -v 2c -c public 192.168.0.13 system

Resultado:
SNMPv2-MIB::sysDescr.0 = STRING: Linux WLA-5000AP 2.4.25-LSDK-5.1.0.42 #1 Mon Jan 7 12:51:41 CST 2008 mips
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::org.0.0.0.0.0.0.0.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (237827) 0:39:38.27
SNMPv2-MIB::sysContact.0 = STRING: Douglas Godoy
SNMPv2-MIB::sysName.0 = STRING: AccessPoint
SNMPv2-MIB::sysLocation.0 = STRING: Cozinha_doug
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.2 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (5) 0:00:00.05


   

Páginas do artigo
   1. Net-SNMP
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Otimizando seu web server com Apache2 + Lighttpd

Net TV a cabo no Mandrake 10.1 Community

FTP com autenticação LDAP

DebConf - Perguntas ao usuário na instalação de pacote .deb

Proxy Reverso com Apache

  
Comentários
[1] Comentário enviado por danniel-lara em 08/10/2012 - 10:39h

Parabéns pelo artigo

[2] Comentário enviado por removido em 08/10/2012 - 15:32h

Muito bom o artigo.

[3] Comentário enviado por wes300 em 09/10/2012 - 00:20h

super utíl


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts