Áú»¢¶Ä²©

2 Agente SNMP

Vis?o geral

Voc¨º poder¨¢ precisar utilizar o protocolo SNMP para monitorar dispositivos como impressoras, switches, roteadores ou nobreaks que, normalmente, possuem interfaces SNMP habilitadas e onde ¨¦ impratic¨¢vel manter um Áú»¢¶Ä²© Agent funcionando.

Para que o Áú»¢¶Ä²© Server esteja apto a receber dados coletados por um agente SNMP, ele dever¨¢ ser configurado com o suporte SNMP.

As coletas SNMP s?o feitas somente atrav¨¦s do protocolo UDP.

Desde o Áú»¢¶Ä²© 2.2.3 o Áú»¢¶Ä²© Server e o Áú»¢¶Ä²© Proxy tem a capacidade de coletar m¨²ltiplos dados de um dispositivo a partir de uma ¨²nica requisi??o. Isso afeta todos os tipos de itens SNMP (itens normais SNMP, itens SNMP com ¨ªndice din?mico, e o processo de autobusca SNMP) os tornando mais eficientes. Mais detalhes sobre coletas m¨²ltiplas podem ser obtidos. Desde o Áú»¢¶Ä²© 2.4 existe uma op??o chamada "Usar requisi??es em lote" em cada interfce SNMP que permite habilitar ou desabilitar requisi??es em lote naquela interface.

Desde o Áú»¢¶Ä²© 2.2.7 e o Áú»¢¶Ä²© 2.4.2 os processos do Áú»¢¶Ä²© Server e do Áú»¢¶Ä²© Proxy registram de forma similar respostas incorretas do SNMP:SNMP response from host "gateway" does not contain all of the requested variable bindingsEnquanto n?o forem mapeadas todas as situa??es problem¨¢ticas, elas s?o ¨²teis para identificar dispositivos cuja coleta em lote (bulk) pode ser desabilitada.

Desde o Áú»¢¶Ä²© 2.2 os processos do Áú»¢¶Ä²© Server e do Áú»¢¶Ä²© Proxy utilizam o par?metro de 'Timeout' nas requisi??es SNMP. Adicionalmente eles n?o realizam o reteste ap¨®s uma requisi??o que falhar (por 'timeout' ou credenciais erradas). Anteriormente era padr?o que a bibilioteca SNMP tivesse o 'timeout' de 1 segundo e 5 tentativas.

Desde o Áú»¢¶Ä²© 2.2.8 e o Áú»¢¶Ä²© 2.4.2 os processos do Áú»¢¶Ä²© Server e do Áú»¢¶Ä²© Proxy semre ir?o repetir pelo menos uma vez, seja atrav¨¦s do mecanismo interno da biblioteca SNMP ou atrav¨¦s do mecanismo interno de processamento em lote.

Se estiver monitorando dispositivos SNMPv3, certifique-se que o 'msgAuthoritativeEngineID' (tamb¨¦m conhecido como 'snmpEngineID' or "Engine ID") nunca seja repetido entre dois dispositivos. Conforme a (se??o 3.1.1.1) este valor deve ser ¨²nico para cada dispositivo.

Configurando a monitora??o SNMP

Para come?ar a monitora??o atrav¨¦s do SNMP, utilize os passos a seguir:

Passo 1

Criar um host para o dispositivo que possui interface SNMP.

Informe o endere?o IP de sua interface. Voc¨º pode aproveitar um dos templates de SNMP (Template SNMP Device e outros) que s?o fornecidos junto com o Áú»¢¶Ä²©, eles ir?o adicionar automaticamente um conjunto de itens. Entretanto, o dispositivo que voc¨º deseja monitorar poder¨¢ n?o ser compat¨ªvel com eles. Clique em Adicionar para salvar o host.

As requisi??es SNMP n?o utilizam a porta do agente, ela ser¨¢ ignorada.

Passo 2

Descubra o OID que voc¨º deseja monitorar (normalmente na documenta??o do dispositivo).

Para obter uma lista dos OIDs do dispositivo o comando snmpwalk poder¨¢ ser utilizado (ele ¨¦ parte do pacote que voc¨º adicionou durante a instala??o do Áú»¢¶Ä²© Server) ou alguma ferramenta equivalente:

shell> snmpwalk -v 2c -c public <host IP> .

O '2c' utilizado no comando se refere ¨¤ vers?o do SNMP, caso seu dispositivo trabalhe, por exemplo, com a primeira vers?o do protocolo voc¨º pode substitui-lo por '1', para indicar que o 'snmpwalk' dever¨¢ utilizar esta vers?o do protocolo.

Voc¨º dever¨¢ ter como resultado uma lista contendo os nomes dos OIDs, seus tipos e ¨²ltimo valor de cada um. ? poss¨ªvel que o nome de comunidade configurada no dispositivo seja outro que n?o o 'public', neste caso voc¨º dever¨¢ descobrir o nome correto e utiliza-lo.

Voc¨º pode recorrer a esta lista para localizar qual nome de OID que voc¨º deseja monitorar, por exemplo, se voc¨º desejar monitorar o volume em bytes que ¨¦ recebido pela terceira porta do dispositivo, voc¨º poderia utilizar o nome de OID IF-MIB::ifInOctets.3, conforme o exemplo a seguir:

IF-MIB::ifInOctets.3 = Counter32: 3409739121

Agora utilizaremos o comando snmpget para descobrir o n¨²mero associado ao nome de OID selecionado ('IF-MIB::ifInOctets.3'):

shell> snmpget -v 2c -c public -On 10.62.1.22 IF-MIB::ifInOctets.3

Observe que o ¨²ltimo n¨²mero neste nome de OID ¨¦ o n¨²mero da porta que voc¨º deseja monitorar. Mais detalhes em ¨ªndices din?micos do SNMP.

O resultado do comando deve ser algo similar ao texto a seguir:

.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 3472126941

Novamente, o ¨²ltimo n¨²mero no OID ¨¦ o n¨²mero da porta.

Alguns fabricantes, como a 3COM, preferem nomear as suas portas come?ando no n¨²mero 100, exemplos: porta 1 = porta 101, porta 3 = porta 103. A CISCO (e a maioria dos fornecedores) usa uma sequ¨ºncia simples, exemplo: port 3 = 3.

Alguns dos OIDs mais utilziados s?o traduzidos automaticamente para a representa??o num¨¦rica de forma nativa no Áú»¢¶Ä²©.

No ¨²ltimo exemplo o tipo do valor recebido ¨¦ "Counter32", que corresponde internamente ao tipo ASN_COUNTER. A lista completa de tipos suportados ¨¦: ASN_COUNTER, ASN_COUNTER64, ASN_UINTEGER, ASN_UNSIGNED64, ASN_INTEGER, ASN_INTEGER64, ASN_FLOAT, ASN_DOUBLE, ASN_TIMETICKS, ASN_GAUGE, ASN_IPADDRESS, ASN_OCTET_STR e ASN_OBJECT_ID (desde o Áú»¢¶Ä²© 2.2.8 ou 2.4.3). Estes tipos correspondem, respectivamente, ¨¤: "Counter32", "Counter64", "UInteger32", "INTEGER", "Float", "Double", "Timeticks", "Gauge32", "IpAddress", "OCTET STRING", "OBJECT IDENTIFIER" na saida do snmpget, mas tamb¨¦m podem ser apresentados como "STRING", "Hex-STRING", "OID" ou outro.

Passo 3

Criar o item de monitora??o.

Volte ao Áú»¢¶Ä²© e clique no link Itens da linha do Host SNMP que voc¨º criou mais cedo. Dependendo da associa??o que voc¨º fez, ou n?o fez, com algum template voc¨º poder¨¢ visualizar uma lista com ou sem itens. Neste tutorial estamos trabalhando assumindo que voc¨º criar¨¢ manualmente os itens a partir das informa??es conseguidas pelo 'snmpwalk' e 'snmpget'. Clique em Criar item. No formul¨¢rio de novo item, infomre o nome e se certifique que o campo 'Interface do host' est¨¢ com a configura??o da interface SNMP cadastrada. Informe o nome de comunidade (normalmente 'public') e o n¨²mero do OID que se deseja monitorar, por exemplo: .1.3.6.1.2.1.2.2.1.10.3

Infome a porta SNMP como sendo a 161 e 'chave' como algo significativo, por exemplo: SNMP-InOctets-Bps. Informe o multiplicador que se deseja trabalhar, al¨¦m de informar o 'Intervalo de atualiza??es' e o 'Per¨ªodo de reten??o do hist¨®rico' se voc¨º desejar usar um valor diferente do padr?o. Defina o 'Tipo de informa??o' para Num¨¦rico (fracion¨¢rio) e o campo 'Armazenar valor' para "Delta (altera??es por segundo)" (isso ¨¦ importante, sem esta configura??o voc¨º ter¨¢ o acumulado de valores e n?o ¨¦ isso que se deseja).

Agora salve o item e acesse Monitoramento ¡ú Dados recentes para visualizar a coleta de dados!

Observe que existem op??es espec¨ªficas para o SNMPv3:

Par?metro Descri??o
Nome do contexto Informe o nome para identificar o item na subrede SNMP.
Suportado desde o Áú»¢¶Ä²© 2.2.
Macros de usu¨¢rio s?o aceitas neste campo. | |
Nome de seguran?a//
Infomre o nome de seguran?a.
Macros de usu¨¢rio s?o aceitas neste campo.
N¨ªvel de seguran?a Selecione o n¨ªvel de seguran?a:
noAuthNoPriv - n?o ser¨¢ utilizado nenhum protocolo de privacidade ou autentica??o
AuthNoPriv - protocolo de autentica??o ser¨¢ utilizado, de privacidade n?o
AuthPriv - ambos os protocolos ser?o utilizados
Protocolo de autentica??o Selecione o tipo de protocolo de autentica??o - MD5 ou SHA.
Senha autentica??o Informe a frase de autentica??o.
Macros de usu¨¢rio s?o aceitas neste campo.
Protocolo de privacidade Select privacy protocol - DES or AES.
Frase privada Entre om a frase privada.
Macros de usu¨¢rio s?o aceitas neste campo.

Desde o Áú»¢¶Ä²© 2.2, os protocolos SHA e AES s?o suportados para a autentica??o e privacidade SNMPv3, em adi??o ao MD5 e ao DES que j¨¢ eram suportados.

Exemplo 1

Exemplo geral:

Par?metro Descri??o
Comunidade public
SNMP OID 1.2.3.45.6.7.8.0 (ou .1.2.3.45.6.7.8.0)
Chave <Texto ¨²nico que ser¨¢ utilizado como refer¨ºncia nas triggers>
Por exemplo: "my_param".

Observe que o SNMP OID poder¨¢ ser o n¨²mero ou seu nome. Em alguns casos pode ser que o Áú»¢¶Ä²© n?o consiga resolver o n¨²mero a partir do nome, para estas situa??es recomenda-se utilizar o 'snmpget' para fazer esta resolu??o antes de configurar o item:

shell> snmpget -On localhost public enterprises.ucdavis.memory.memTotalSwap.0

Monitora??o atrav¨¦s de SNMP s¨® ¨¦ poss¨ªvel se, durante a configura??o do bin¨¢rio do Áú»¢¶Ä²© Server ou Áú»¢¶Ä²© Proxy, tiver sido utilizado o par?metro --with-net-snmp.

Exemplo 2

Monitorando o tempo de carga (uptime):

Par?metro Descri??o
Comunidade public
SNMP OID MIB::sysUpTime.0
Chave router.uptime
Tipo de informa??o Num¨¦rico (fracion¨¢rio)
Unidade uptime
Multiplicador 0.01

Funcionamento interno do processamento em lote

A partir do Áú»¢¶Ä²© 2.2.3 os processos do Áú»¢¶Ä²© Server e Áú»¢¶Ä²© Proxy tem a capacidade de solicitar v¨¢rios dados atrav¨¦s de SNMP em uma ¨²nica requisi??o. Esta caracter¨ªstica afeta diversos tipos de itens SNMP:

Todos os itens SNMP, com igual intervalo de coletas, s?o agendados para serem coletados juntos. Para os primeiros dois tipos de itens a fila agrupa at¨¦ 128 itens ao mesmo tempo, enquanto as regras de autobusca s?o processadas de forma individual.

No n¨ªvel mais baixo, dois tipos de opera??es s?o feitas para obter os valores: obter m¨²ltiplos objetos e varrer ¨¢rvore OID.

Para a a??o de "obten??o", uma requisi??o 'GetRequest-PDU' ¨¦ utilizada com at¨¦ 128 solicita??es. Para a "varredura", uma requisi??o "GetNextRequest-PDU" ser¨¢ utilizada com o SNMPv1 e uma 'GetBulkRequest' com "max-repetitions" definido como 128 ser¨¢ utilizada com SNMPv2 e SNMPv3.

Os benef¨ªcios de se utilizar o processamento em lote de grandes volumes de itens SNMP s?o listados a seguir:

  • itens SNMP normais se beneficiam de uma "obten??o" otimizada;
  • itens SNMP com ¨ªndices din?micos se beneficiam tanto da "obten??o" quanto da "varredura" otimizada: "obten??o" ¨¦ utilizada para a verifica??o de ¨ªndice e a "varredura" para construir o cache;
  • regras de autobusca SNMP se beneficiam da melhoria na "varredura".

Entretanto, existem limita??es t¨¦cnicas que fazem com que nem todos os dispositivos sejam capazes de retornar 128 valores por requisi??o. Algumas vezes o dispositivo pode retornar com a mensagem "(1) tooBig" ou n?o responder a todos uma vez que a quantidade ¨¦ superior ao limite do equipamento.

Para definir o m¨¢ximo de objetos para se solicitar a um dispositivo o Áú»¢¶Ä²© In order to find an optimal number of objects to query for a given device, Áú»¢¶Ä²© uses the following strategy: * A primeira requisi??o solicita 1 valor apenas; * Se obteve sucesso, solicita 2 valores; * Se obteve sucesso, solicita 3 valores; * Se obteve sucesso, solicita 4 valores; Obtendo sucesso nas tentativas as pr¨®ximas consultas requisitar?o, respectivamente: 6, 9, 13, 19, 28, 42, 63, 94, 128 (multiplica??o do ¨²ltimo valor bem sucedido por 1,5).

Uma vez que o dispositivo n?o consiga dar uma resposta adequada a uma quantidade de itens simult?neos (por exemplo, 42 valores), o Áú»¢¶Ä²© faz duas coisas.

Primeiro, ele reduz o tamanho do lote que falhou pela metade (no caso 21). Se o dispositivo responder de forma adequada, ser¨¢ feito o ajuste para 28 itens (fator anterior). Entretanto, se a falha persistir, o Áú»¢¶Ä²© voltar¨¢ a solicitar os itens 1 por 1. Se o dispositivo voltar a falhar, o problema n?o ser¨¢ de quantidade de valores simult?neos.

A segunda coisa que ele far¨¢ para os lotes de itens subsequentes ¨¦ come?ar com o ¨²ltimo n¨²mero de valores obtidos com sucesso (28 em nosso exemplo) e continuar¨¢ solicitando valores somando 1 ao limite de requisi??es simult?neas at¨¦ encontrar o limite. Quando descobrir o limite exato o Áú»¢¶Ä²© n?o mais far¨¢ estes testes e passar¨¢ a trabalhar somente com o limite descoberto neste dispositivo.

Se grandes consultas falharem com esta quantidade de valores solicitados, pode significar uma de duas coisas. Os crit¨¦rios exatos que o dispositivo utiliza para limitar a quantidade de valores n?o pode ser descoberta, mas tentamos aproximar o valor. Assim a primeira possibilidade ¨¦ que este ¨¦ o n¨²mero de valores simult?neos que representa algo pr¨®ximo do limite real pois, normalmente, a resposta ¨¦ menor do que o limite. A segunda possibilidade ¨¦ que um pacote UDP, em qualquer dire??o, simplesmente se perdeu. Por estas raz?es o Áú»¢¶Ä²© considera que a consulta falhou e reduz o limite de valores simult?neos para tentar trabalhar numa faixa mais confort¨¢vel para o dispositivo mas, (a partir do 2.2.8) somente at¨¦ duas tentativas.

No exemplo acima, se uma consulta com 32 requisi??es simult?neas falhar, o Áú»¢¶Ä²© ir¨¢ reduzir o contador para 31. Se falhar novamente, reduz para 30. Entretanto, o Áú»¢¶Ä²© n?o ir¨¢ reduzir de 30 pois entender¨¢ que a falha se deve a perda de pacotes UDP e n?o por limite do dispositivo.

Se um dispositivo n?o conseguir trabalhar com requisi??es em lote por outras raz?es, e a eur¨ªstica acima n?o funcionar, desde o Áú»¢¶Ä²© 2.4 existe uma op??o chamada "Usar requisi??es em lote" em cada interface que poder¨¢ ser desativada.