Nesta seção, realizaremos uma descoberta de baixo nível em um dispositivo SNMP.
Este método de descoberta de OIDs SNMP é suportado desde o Zabbix server/proxy 6.4.
1. Crie um item de agent SNMP com uma chave como:
Este item executa uma única varredura de tabela SNMP e retorna todas as entradas da tabela em uma única solicitação, em um formato que corresponde à saída do utilitário snmpwalk
com as opções de formatação -Oe -Ot -On
.
Ele retornará o seguinte valor de texto multilinha:
.1.3.6.1.4.1.9999.1.1.1.1.1.1 = STRING: "Temperature Sensor"
.1.3.6.1.4.1.9999.1.1.1.1.2.1 = STRING: "temp"
.1.3.6.1.4.1.9999.1.1.1.1.3.1 = 100
.1.3.6.1.4.1.9999.1.1.1.1.1.2 = STRING: "Humidity Sensor"
.1.3.6.1.4.1.9999.1.1.1.1.2.2 = STRING: "humidity"
.1.3.6.1.4.1.9999.1.1.1.1.3.2 = 200
2. Crie uma regra de descoberta:
3. Na guia Pré-processamento, adicione uma etapa de pré-processamento com o nome "SNMP walk to JSON" no menu suspenso Nome com 3 parâmetros:
Após o pré-processamento, a regra de descoberta retorna um array JSON de conjuntos de macros.
Por exemplo:
[
{
"{#SNMPINDEX}": "1",
"{#SENSORNAME}": "Temperature Sensor",
"{#SENSORTYPE}": "temp",
"{#SENSORVALUE}": "100"
},
{
"{#SNMPINDEX}": "2",
"{#SENSORNAME}": "Humidity Sensor",
"{#SENSORTYPE}": "humidity",
"{#SENSORVALUE}": "200"
}
]
Cada objeto representa um sensor descoberto e fornece macros como {#SNMPINDEX}
, {#SENSORNAME}
, {#SENSORTYPE}
e {#SENSORVALUE}
.
Eles são agrupados pelo índice SNMP, que é o sufixo numérico no final de cada OID (por exemplo, .1, .2) — esse índice identifica exclusivamente cada linha na tabela SNMP e é extraído automaticamente como {#SNMPINDEX}
.
4. Sob a regra de descoberta, crie um ou mais protótipos de item (com a regra de descoberta como item mestre).
Por exemplo, item dependente do valor do sensor:
Na guia Pré-processamento, adicione uma etapa de pré-processamento com o nome "SNMP walk value" com o OID ".1.3.6.1.4.1.9999.1.1.1.1.3.{#SNMPINDEX}" no campo Parâmetro. Formato: "Inalterado".
Os seguintes itens serão descobertos:
Nome | Chave | OID de onde o valor é extraído | Valor do item |
---|---|---|---|
Sensor 1: Temperature Sensor | sensor.value[1] | .1.3.6.1.4.1.9999.1.1.1.1.3.1 | 100 |
Sensor 2: Humidity Sensor | sensor.value[2] | .1.3.6.1.4.1.9999.1.1.1.1.3.2 | 200 |
Quando a regra de descoberta é executada, itens como sensor.value[1]
, sensor.value[2]
são criados.
Cada item dependente extrai seu valor do resultado do SNMP walk do item mestre usando pré-processamento, sem executar solicitações SNMP separadas.
5. Referencie protótipos de item dependente em protótipos de trigger usando as mesmas macros da regra de descoberta. Exemplo:
Isso produz um trigger para cada sensor descoberto (por exemplo, sensor.value[1], sensor.value[2]) e dispara se o valor mais recente (temperatura ou umidade) exceder 75.
6. Inclua itens dependentes para cada entidade descoberta. Exemplo de chave de item de gráfico:
Um gráfico é criado por {#SNMPINDEX}
, plotando temperatura e umidade ao longo do tempo.
Esta configuração executa apenas uma única solicitação SNMP walk por ciclo de polling, independentemente do número de itens descobertos. Todos os itens dependentes extraem seus valores do resultado do SNMP walk mestre usando pré-processamento, reduzindo significativamente o tráfego e a carga do SNMP.
Os índices dinâmicos (por exemplo, índices de interface) podem mudar quando o hardware é reconfigurado. Para acomodar esse comportamento, uma regra de descoberta mestre SNMP walk é criada com uma chave como:
Após o pré-processamento SNMP walk para JSON, o resultado pode ser semelhante a:
Um protótipo de item dependente usa a macro {#SNMPINDEX}
para construir a chave:
O pré-processamento para este protótipo inclui o nome "SNMP walk value" com o OID "1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX}" no campo Parâmetro. Formato: "Inalterado".
Em tempo de execução, itens reais como net.if.in[2]
e net.if.in[3]
são criados. Se um determinado índice de interface mudar (por exemplo, se o índice 2
for substituído por 5
na tabela SNMP), então na próxima execução da regra de descoberta:
Exemplo de protótipo de trigger:
Exemplo de protótipo de gráfico inclui itens:
Esta configuração garante o monitoramento confiável de tabelas com índices dinâmicos, minimizando o tráfego SNMP—apenas um único SNMP walk por ciclo de coleta é necessário, com protótipos de itens dependentes extraindo os valores necessários.
Quando o server é executado, ele criará itens dependentes reais, triggers e gráficos com base nos valores que a regra de descoberta SNMP retorna.