必要なインデックス番号(例えば、ネットワーク・インターフェース)をSNMP OIDの中から見つけることができるかもしれませんが
インデックス番号が常に同じであるとは限りません。
インデックス番号は動的であり、時間の経過とともに変化し、その結果、アイテムが動作しなくなる可能性があります。
このようなシナリオを回避するために、インデックス番号が変化する可能性を考慮したOIDを定義することが可能です。
たとえば、次のようなインデックス値を取得する必要があるとします。
Cisco のデバイスの GigabitEthernet0/1 インターフェイスに対応するifInOctetsに対応する
インデックス値を取得する必要がある場合、次のOIDを使用します。
OIDの特別な構文が使用されます。
<OID of data>["index","<base OID of index>","<string to search for>"]
パラメーター | 説明 |
---|---|
OID of data | アイテムのデータ検索に使用するメインOID。 |
index | 処理方法。現在、1つの方法がサポートされています: index - インデックスを検索し、データOIDに追記する。 |
base OID of index | このOIDを検索して、文字列に対応するインデックス値を取得する。 |
string to search for | 検索時に値と完全一致するために使用する文字列。大文字と小文字を区別する。 |
apache プロセスのメモリ使用量を取得します。
この OID 構文を使用する場合、以下のようになります。
インデックス番号はここで検索されます。
...
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"
...
これで、5388というインデックスができました。
このインデックスは、データOIDに追加され、目的の値を受け取ります。
動的インデックスアイテムが要求された場合、ZabbixはインデックスのベースOIDの下にある
SNMPテーブル全体を取得し、キャッシュします。
これは、別のアイテムが同じベースOIDを後で参照する場合に備えて行われます。
Zabbixは監視ホストに再度問い合わせる代わりに、キャッシュからインデックスを検索します。
各ポーラープロセスは別々のキャッシュを使用していることに注意してください。
その後のすべての値取得操作では、見つかったインデックスのみが検証されます。
インデックスが変更されていない場合、値が要求されます。
変更されたインデックスに遭遇した各ポーラは、インデックスSNMPテーブルを再度検索し、キャッシュを再構築します。