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テーブル全体を取得しキャッシュします。これが行われるのは、もう1つ別のアイテムが同一のベースOIDを後で参照する場合です。そのとき、Zabbixは、監視対象ホストに再び問い合わせることなく、キャッシュ内のインデックスを検索します。各ポーラープロセスでは、別々のキャッシュが使用されることに注意してください。
その後の値の取得操作すべてにおいて、見つかったインデックスだけが検証されます。インデックス番号が変わっていない場合、値がリクエストされます。インデックス番号が変わっている場合、キャッシュが再構築され、インデックス番号の変更が発生する各ポーラーは、インデックスSNMPテーブルに再び移動して検索します。
本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。