Áú»¢¶Ä²©

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 monitoramento SNMP

Para iniciar o monitoramento de um dispositivo atrav¨¦s do protocolo SNMP ¨¦ necess¨¢rio executar estas etapas:

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 Uptime (Disponibilidade):

Par?metro Descri??o
OID MIB::sysUpTime.0
Key router.uptime
Value type Float
Units uptime
Multiplier 0.01

Native SNMP bulk requests

The walk[OID1,OID2,...] item allows to use native SNMP functionality for bulk requests (GetBulkRequest-PDUs), available in SNMP versions 2/3.

A GetBulk request in SNMP executes multiple GetNext requests and returns the result in a single response. This may be used for regular SNMP items as well as for SNMP discovery to minimize network roundtrips.

The SNMP walk[OID1,OID2,...] item may be used as the master item that collects data in one request with dependent ityems that parse the response as needed using preprocessing.

Note that using native SNMP bulk requests is not related to the option of combining SNMP requests, which is Áú»¢¶Ä²© own way of combining multiple SNMP requests (see next section).

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.