Issue
SNMP ディスカバリーの仕組みについてさらに詳しく知りたいですか?この記事では、前提条件、フロー、一般的なトラブルシューティング手順に関する詳細な情報を提供します。
コンテンツ
前提条件
- SNMPバージョン:これは、ターゲットホストに対して検証する必要がある重要なチェックの1つです。
- ServiceNow ディスカバリーは、SNMP バージョン 1、2c、3 をサポートしています。
- ディスカバリーではデフォルトでバージョン 1 と 2c を使用します。
- バージョン 3 のサポートは明示的に有効にする必要があります。
- MID サーバーは、デフォルトですべての SNMP プロトコルバージョンをサポートしています。
- 特定のバージョンの SNMP バージョンのみをサポートするように MID サーバーを設定することも可能です。
- 認証情報:SNMP の認証情報にはユーザー名が含まれておらず、community string. と呼ばれるパスワードのみが含まれています。
- 多くの SNMP デバイス向けのデフォルトの読み取り専用コミュニティ文字列はパブリックであり、ディスカバリーは自動的にその文字列を試行します。
- public のコミュニティ文字列ではない場合は、適切な SNMP 認証情報を入力してください。
MID サーバーの機能と要件
SNMP デバイスでディスカバリーを実行するために追加機能を確認する必要はありません。MID には、ディスカバリーを実行する機能のみが必要です。
ベースシステムにおける SNMP ディスカバリーフロー
- ServiceNow のディスカバリープロセスには、SNMP によって管理されているデバイスを検出する機能があります。対象となるデバイスには以下のようなものがあります。
- スイッチ (Kingston 以降の積み重ねスイッチも同様)
- ルーター
- プリンター
- 無線アクセスポイントのコントローラー
- ロードバランサー
- ディスカバリープロセスでは、MIB と OID を使用して、ネットワーク対応デバイスの分類、識別、探索を行います。
- MIB:Management Information Base (管理情報ベース) は、ネットワークデバイスによって定義された一連の値 (統計とコントロールの両方) を含むデータベースのようなものです。デバイスベンダーは、プライベート MIB と呼ばれる MIB を選択することもできます。
- OID:Object Identifier (オブジェクト識別子) は、SNMP の実装で使用される表現で、MIB と対象のオブジェクトを組み合わせたものです。対象のオブジェクトは、ポーリングデバイスが検索できるパラメーター値 (デバイスの稼働時間など) として定義できます。
- たとえば、デバイスが OID = 1.3.6.1.2.1.1.3.0 であるとします。下の画像は、それがどのように加算されるかの例を示しています。最初の 7 桁は MIB を表し、最後の 2 桁は対象のオブジェクトを表します。
- 検出フェーズの概要
- Shazzam またはスキャンフェーズ:ユーザーが指定した IP アドレスに対して、Shazzam ではデバイスをポーリングし、応答しているポートをチェックします。このシナリオでは、デバイスが応答すると予想されるポートが 161 であるとします。組織によって SNMP が実行されるポートがカスタマイズされている可能性もあるため、適切にチェックする必要があります。
- 分類フェーズ:アクティブなポートの場合、 ポートプローブモジュールにはトリガーされるプローブまたはパターンのセットがあり、SNMPデバイスの場合は通常 、SNMP - 分類です。このプローブの主な目的は、ターゲットデバイスから有効な OID を抽出することです。SNMP - 分類の入力ペイロードは、以下のサンプル画像のようになります。
-
-
-
-
- 「sysDescr」タグはデバイスのタイプを定義します。
- 「sysObjectID」タグには OID が含まれています。
- デバイスの分類は、SNMP ディスカバリープロセスによって次のように処理されます。
- デバイスタイプごとに、特定の SNMP 分類子が定義されています。それらは discovery_classy_snmp テーブルの下にあります。
- 各分類子には、分類基準があります。このセクション/タブには、関連する分類子をトリガーするためにターゲットホストが満たす必要がある条件が含まれています。すべての分類基準レコードは discovery_class_criteria で確認できます。フェッチされた OID は、適切な分類子と、SNMP OID 分類タブ の下にある分類子に定義およびマップされる OID のリストを選択する際に考慮されます (OID が SNMP OID テーブルに存在し、存在しない場合でも分類は続行されますが、使用可能なすべての分類子の条件がチェックされます)。すべての OID 固有の情報は、discovery_snmp_oid の下にあります。
- 適切な分類子が選択されると、分類中に一致した条件に基づいてトリガーされるプローブが [プローブのトリガー] セクションで定義され、discovery_classifier_probe で表示することもできます。
- 以下は、標準ネットワークルーターの SNMP 分類子レコードの例です。
-
- 識別フェーズ:取得した MIB に従って、分類フェーズは、デバイスのタイプと、デバイスを識別するためにトリガーする必要がある必要なプローブ/パターンを識別フェーズにフィードします。ターゲットホストの MIB がポーリングされ、 対象のオブジェクトが抽出されます。これは、CI に入力されると予想される詳細になります。一般に、SNMP MIB はインスタンスの ecc_agent_mib テーブルに存在し、コンパイルされ、ディスカバリーが稼働している MID サーバーにロードされることが想定されています。すべての MIB が OOTB に存在するわけではなく、要件に応じて追加する必要があることに注意してください。関連する MIB がない場合、ディスカバリーは分類フェーズの先に進むことができません。
- 探索フェーズ:探索フェーズでは、レイヤー 2 ディスカバリーをトリガーすることで、ターゲットホストがさらに探索され、内部の詳細情報を取得します。
-
- 詳細なSNMP検出フローの概要を下の図に示します。
-
-
- 上のフロー画像の手順に従って、一般的な問題と考えられる解決策を次の表に示します。
ステップ | 入力 | 予想される出力 | 発生する可能性のある一般的な問題 | 考えられる解決策 |
1.1 1.2 1.2.1 | 該当なしデバイスの IP | SNMP ポートでのデバイス応答の確認とゴーアヘッドトリガー SNMP - 分類 |
問題 1: SNMP ポートはアクティブですが、接続が拒否される可能性があります。 問題 2: デバイスが両方のポートで応答する場合、SSH が SNMP よりも優先されます。これにより、最終的にSNMPがトリガーされます。 |
問題 1: ポート アクセスを有効にする。 問題 2: デバイスの SNMP 動作を作成し、それを検出スケジュールに継承します。 |
2.1 2.2 2.3 | デバイスの詳細を抽出するための SNMPTable および SNMPWalk ターゲット MIB | 検出プロセスで適切な分類子を選択するためのシステム OID と条件の抽出 | 「アクティブ、分類できませんでした」と表示されているデバイス | 関連する OID がdiscovery_snmp_OIDから欠落している可能性があります。どの SNMP 分類子にも一致する基準がない可能性があります。 |
3.1 3.1.1 3.1.2 3.2 | NIC やシリアル番号、または関連パターンなどの詳細を抽出する SNMPTable ターゲティング | MIB から抽出されたデバイス固有の詳細 |
問題 1: "分類済み、識別できませんでした" エラー 問題 2: パターン エラー |
問題 1:SNMP - ID プローブが成功したかどうかを確認します。そうでない場合は、受信したエラーに基づいて調査します。 問題 2:パターンデバッグを実行してエラーを特定するか、パターン実行ログでエラーを確認します。 |
4.1 4.2 | 近接デバイスなどの詳細を抽出するための SNMPTable ターゲティング | N/W デバイスの隣接デバイスである複数のデバイスと関係タイプ | 欠落しているデバイスネイバー間の関係 | デバイス近接 [discovery_device_neighbors] に関する情報は、探索中にレイヤー 2 プロトコルキャッシュプローブによって収集されます。トリガーされたかどうか、またはエラーがあるかどうかを確認します。 |
注: SNMP プローブにパラメーターを追加する柔軟性があります。OID の子を特定して探索する必要があるシナリオや、タイムアウトを設定する必要があるシナリオが考えられます。これを行う方法の詳細については、SNMP プローブパラメーターとその追加方法に関する ServiceNow のドキュメントを参照してください。
SNMP プローブパラメーター
SNMP デバイスのディスカバリー時に使用できるプローブパラメーターが追加されていますこれらは、次のテーブルと SNMP プローブパラメーターのドキュメントに記載されています。
パラメーター | 説明 | デフォルト値 | ||||||
---|---|---|---|---|---|---|---|---|
oid_spec_list | OID 仕様のリスト (1 行に 1 つ)。各仕様は、次の 2 つの形式のいずれかになっている必要があります。
{OID Children} は、指定されたテーブルのエントリー内の、カンマで区切られた子ノードのリストを参照します。たとえば、「ifEntry.ifIndex,ifEntry.ifDescr,ifEntry.ifType」はテーブル「iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable」の OID の子です。便宜上、テーブルエントリープリフィックスは省略される場合があります(前にある子は、「ifIndex,ifDescr,ifType」として指定できます)。 いずれの子にも、括弧内にフィルター修飾子を含めることができます。たとえば、子「entPhysicalContainedIn(= 0)」は、「entPhysicalContainedIn」の値が 0 の場合にのみテーブルエントリーを返すことを指定します。式でサポートされている演算子は次のとおりです。
複数の子にフィルター式がある場合、いずれかの子が一致すると、そのエントリーが読み取られます。 「//」を含むすべてのコンテンツは無視されます (コメント)。「1.3.6.1」または「iso.org.dod.internet」で始まらない OID は、便宜上「1.3.6.1」と自動的に前置きされます。 | required | ||||||
source | SNMP をクエリーするデバイスの IP アドレスまたはホスト名です。 | required | ||||||
index | コミュニティ文字列の後に適用するインデックスです。VLAN インタロゲーションの場合は、Cisco スタイルのコミュニティ文字列インデックスです。 | 0 | ||||||
credential_id | 他よりも優先的に使用される特定の資格情報の sys_id です。このパラメーターは内部でのみ使用され、サポートされていません。 | なし | ||||||
credential_tag | 使用する必要がある資格情報タグです。このパラメーターは内部でのみ使用され、サポートされていません。 | なし | ||||||
timeout |
デフォルトに代わる応答を待機するためのタイムアウト値 (ミリ秒単位) です。このパラメーターを使用して、SNMP MID サーバー設定パラメーターの mid.snmp.request.timeout を上書きできます。 注意:use_getbulk が true に設定されている場合、個別の GETBULK 要求に対してタイムアウト値が設定されます。
| 1500 | ||||||
established_session_timeout | 少なくとも 1 つの応答が受信された後に応答を待機する間隔 (ミリ秒単位) です。これより長い値は、完全かつ正確なデータを収集するのに役立ちます。このパラメーターを使用して、SNMP MID サーバー設定パラメーターの mid.snmp.request.timeout を上書きできます。 | 500 | ||||||
debug | デバッグログ記録を有効にします。デバッグモードの場合は true に設定します。 | false | ||||||
request_interval | 応答が受信されなかったときに、タイムアウトして (または established_session_timeout 値に達して) OID に後続の要求を行うまでの間隔 (ミリ秒単位) です。この値がタイムアウト (または established_session_timeout) 値と同じかそれ以上に設定されている場合は、特定の OID に対して単一の要求のみが送信されます。タイムアウト (または established_session_timeout) 値を変更する場合は、request_interval を同時に調整して、指定された環境に合わせて、同じ OID に対する要求が多くなりすぎたり少なくなりすぎたりしないようにします。 | 400 | ||||||
request_delay | 応答の受信と次の要求の送信との間の間隔 (ミリ秒単位) です。デフォルトは 0 (遅延なし) です。この値で、SNMP クエリーの全体的な速度を遅くするように設定することができます。 | 0 | ||||||
result_format | これらのプローブの JSON 形式のペイロードを返します。
注意:このパラメーターを他のプローブとともに使用すると、センサーに障害が発生します。
| JSON | ||||||
use_getbulk |
複数の SNMP GETNEXT 要求を使用するのではなく、SNMP デバイスから表データを取得するための SNMP GETBULK 要求の使用を有効にします。表形式のデータでは、GETBULK の方が効率的です。要求タイプに関係なく、特定のデバイスは他のタスクでビジー状態の場合に何も結果を返さないことがあります。 このパラメーターは、プローブレベルでの設定に使用されます。また、GETBULK は、個々の MID Server またはすべての MID Server に対してグローバルに設定することもできます。設定は、優先度の順にリストされます。
use_getbulk が true に設定されている場合、established_session_timeout、request_interval、request_delay パラメーターは無視されます。 代わりに、retries パラメーターを使用できます。 タイムアウト設定は、use_getscalar で使用されているものと同じです。 デフォルトでは、次のプローブは GETBULK 要求を使用します (パラメーター値は true)。
注意:これらのプローブのタイムアウトの値は 5000 です。
| false | ||||||
use_getscalar | SNMP デバイスからのスカラー値の簡単な取得と処理を有効にします。
use_getscalar が true に設定されている場合、established_session_timeout、request_interval、request_delay パラメーターは無視されます。 代わりに、retries と timeout パラメーターを使用できます。 タイムアウト設定は、use_getbulk で使用されているものと同じです。 | false | ||||||
retries | use_getscalar パラメーターが true に設定されている場合に、個別の GETBULK 要求 (use_getbulk を参照) または GETNEXT 要求を完了するためにディスカバリーによって行われる追加の試行回数です。 | 2 |
SNMP sys_properties
glide.discovery.L3_mapping:ネットワーク機器の TCP/IP レイヤーの論理マッピングを抽出する要求の場合、有効にする必要があります。これは、レイヤー 2 ディスカバリーを超えるものです。
SNMP スクリプトインクルード
知っておくと便利な SNMP スクリプトインクルードをいくつか紹介します.
-
-
-
- SnmpSensor
- このセンサーのそれぞれのプローブから、指定されたフィールド名の OID を取得します。
- SNMPResponse クラスで使いやすいように、テーブル SNMP フィールド OID から最後のオブジェクト名を自動的にトリミングします。
- SNMPResponse
- SNMP シングルトンのフィールドやテーブルを安全かつ簡単に取得するメソッドで、SNMP ペイロードの応答インスタンスをラップします。
- SnmpIdentityInfoParser
- SNMP - ID 情報マルチプローブの結果を解析し、渡された CIData オブジェクトに汎用 NIC とシリアル番号を追加します。
- SNMPNetworkInterfaces
- JavaScript SNMP センサーのネットワークインターフェイスの作成を処理します。
- SnmpSensor
-
-
よくある問題と調査方法
-
-
- MID Server からの SNMP の問題のトラブルシューティングと SNMP ウォークの実行方法については、「 KB0696727:MID Server SNMP のトラブルシューティング」を参照してください。
- 無線アクセスポイント (WAP) の検出の詳細については、「KB1511615」を参照してください。
-
SNMP に関する FAQ
Q: SNMP 検出は V3 資格情報をサポートしていますか。
A:はい、できます。資格情報タイプ SNMPv3 資格情報を使用して、V3 資格情報を設定できます。
Q: ワイヤレス アクセス ポイントの検出はサポートされていますか。
A: WAP が SNMP で応答することが予想される場合、はい。そうでない場合は、サポートされません。その場合、WAP の親となるコントローラーをターゲットにすることを検討する必要があります。
Q: SNMP デバイスの検出中に速度が低下するのはなぜですか。
A: 場合によっては、実行時により多くの OID が必要になるため、デバッグとランタイムの実行に違いがあります。これにより、ネットワークデバイス上のSNMPサービスの優先順位が低いため、デバイスがSNMPクエリに正しく応答しない可能性があります。不整合や異常な動作が発生した場合は、Wireshark ログを収集して確認できます。
Related Links
- SNMP Discovery Troubleshooting (SNMP ディスカバリーのトラブルシューティング)
- MID サーバー SNMP Troubleshooting (MID サーバー SNMP のトラブルシューティング)
- Why Did SNMP Put my SNMP Device in the Wrong Table or CI Class (SNMP が SNMP デバイスを間違ったテーブルまたは CI クラスに配置する理由)
- Discovery Deep Dive - SNMP Classification and Properties (ディスカバリーの詳細:SNMP の分類とプロパティ)