Em algumas situações o índice do SNMP é dinâmico, ou seja, quando você coletou pela primeira vez a interface A tinha o índice 2, mas algum tempo depois o número desta mesma interface poderá ter sido alterado para 23. Isso ocorre com alguns dispositivos.
Esta mudança pode ocasionar instabilidade na monitoração, histórico não confiável ou, até mesmo, alertas errados.
Para evitar este cenário é possível definir um item já prevendo a possibilidade da mudança de numeração do índice.
Por exemplo, se vocÊ precisar receber o índice para ifInOctets que corresponda para a interface GigabitEthernet0/1 em um dispositivo CISCO, você pode utilizar o OID a seguir:
Uma sintaxe especial é utilizada para estas consultas:
<OID of data>["índice","<OID base>","<texto a procurar>"]
Parameter | Description |
---|---|
OID base | OID principal para pesquisar o dado que se deseja o índice. |
Índice | Método de processamento. Atualmente é suportado apenas um método: índice – procura pelo índice para adicionar ao OID Base |
OID base do índice | Este OID será utilizado junto com a informação de índice para recuperar o valor solicitado. |
Texto a procurar | Texto utilizado para localizar o valor que se deseja. Sensitivo ao caso. |
Recuperando uso de memória do processo do apache.
Se utilizar esta sintaxe de OID:
O número do índice será localizado aqui:
...
HOST-RESOURCES-MIB::hrSWRunPath.5376 = STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5377 = STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5388 = STRING: "/usr/sbin/apache2"
HOST-RESOURCES-MIB::hrSWRunPath.5389 = STRING: "/sbin/sshd"
...
Neste caso nós encontramos o índice 5388. Este número será adicionado ao OID base para recuperar o valor que estamos interessados:
Quando um índice dinâmicos é solicitado, o Zabbix recupera e faz o cache da tabela SNMP inteira pesquisada. Isso é feito de forma a acelerar caso outro índice necessite de dados da mesma tabela. Observe que cada 'poller' do Zabbix mantêm um cache em separado.
Para todos os valores subsequentes, apenas o índice recuperado será utilizado. Se ele não tiver sido alterado, solicita-se o valor desejado. Se tiver sido alterado, a tabela SNMP será solicitada novamente.