This is a translation of the original English documentation page. Help us make it better.

4 SNMP OIDsの検出

Overview

In this section we will perform an SNMP discovery on a switch.

This discovery method of SNMP OIDs has been supported since Zabbix server/proxy 6.4.

Item, trigger, graph prototypes

Item prototypes must be created as dependent item prototypes, using macros from the discovery rule.

Dependent items will obtain their values from the walk[] master item. Thus it will not be necessary for each discovered item to query the SNMP device independently.

Trigger and graph prototypes may also be created also by using macros from the discovery rule.

Dynamic indexes with walk[]

Dynamic indexes (for example, interface indexes) can shift when hardware is reconfigured. To accommodate this behavior, a master SNMP walk discovery rule is created with a key such as:

walk[1.3.6.1.2.1.2.2.1.10]

After SNMP walk to JSON preprocessing, the result might resemble:

[
           {
               "{#SNMPINDEX}": "2",
               "{#VALUE}": "123456"
           },
           {
               "{#SNMPINDEX}": "3",
               "{#VALUE}": "654321"
           }
       ]

A dependent item prototype uses the {#SNMPINDEX} macro to construct the key:

net.if.in[{#SNMPINDEX}]

Preprocessing for this prototype includes "SNMP walk value" name with "1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX}" OID in the Parameter field. Format: "Unchanged".

At runtime, actual items such as net.if.in[2] and net.if.in[3] are created. If a given interface index changes (for example, if the index 2 is replaced by 5 in the SNMP table), then on the next run of the discovery rule:

  • The old dependent item net.if.in[2] is marked as "lost" or removed, and no new data is gathered for that item.
  • A new dependent item net.if.in[5] is created, starting with an empty history.
  • Historical data from net.if.in[2] is not automatically moved to net.if.in[5].

Trigger prototype example:

{Template_Interface:net.if.in[{#SNMPINDEX}].last()} > 1000000000

Graph prototype example includes items:

net.if.in[{#SNMPINDEX}]
       net.if.out[{#SNMPINDEX}]

This configuration ensures reliable monitoring of tables with dynamic indexes while minimizing SNMP traffic—only a single SNMP walk per poll cycle is required, with dependent item prototypes extracting the necessary values.

Discovered entities

When server runs, it will create real dependent items, triggers and graphs based on the values the SNMP discovery rule returns.