SNMP ディスカバリーの説明Descriptionコンテンツ 概要前提条件MID サーバーの機能と要件ベースシステムにおける SNMP ディスカバリーフローよくある問題と調査方法 概要 この記事は、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 であるとします。以下は追加される例です。 ディスカバリーフェーズの概要 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 ディスカバリーフロー: よくある問題と解決策: 注意:SNMP プローブには、パラメーターを追加する柔軟性があります。OID の子を特定して探索する必要があるシナリオや、タイムアウトを設定する必要があるシナリオが考えられます。そういったシナリオに対応する方法の詳細については、ServiceNow ドキュメントで「SNMP プローブパラメーター」とその追加方法に関するドキュメントを参照してください。 SNMP プローブパラメーター SNMP デバイスのディスカバリー時に使用できるプローブパラメーターが追加されています(リリースごとに同じドキュメントがあります)。 パラメーター説明デフォルト値oid_spec_listOID 仕様のリスト (1 行に 1 つ)。各仕様は、次の 2 つの形式のいずれかになっている必要があります。 walk {OID}:OID とそのすべての子にアクセスする table {OID} {OID Children}:テーブル内のすべてのエントリーにアクセスし、指定した子のみを返す (例:iso.org.dod.internet) {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ソースSNMP をクエリーするデバイスの IP アドレスまたはホスト名です。requiredインデックスコミュニティ文字列の後に適用するインデックスです。VLAN インタロゲーションの場合は、Cisco スタイルのコミュニティ文字列インデックスです。0credential_id他よりも優先的に使用される特定の資格情報の sys_id です。このパラメーターは内部でのみ使用され、サポートされていません。なしcredential_tag使用する必要がある資格情報タグです。このパラメーターは内部でのみ使用され、サポートされていません。なしtimeout デフォルトに代わる応答を待機するためのタイムアウト値 (ミリ秒単位) です。このパラメーターを使用して、SNMP MID サーバー設定パラメーターの mid.snmp.request.timeout を上書きできます。 注意:use_getbulk が true に設定されている場合、個別の GETBULK 要求に対してタイムアウト値が設定されます。 1500established_session_timeout少なくとも 1 つの応答が受信された後に応答を待機する間隔 (ミリ秒単位) です。これより長い値は、完全かつ正確なデータを収集するのに役立ちます。このパラメーターを使用して、SNMP MID サーバー設定パラメーターの mid.snmp.request.timeout を上書きできます。 500debugデバッグログ記録を有効にします。デバッグモードの場合は true に設定します。falserequest_interval応答が受信されなかったときに、タイムアウトして (または established_session_timeout 値に達して) OID に後続の要求を行うまでの間隔 (ミリ秒単位) です。この値がタイムアウト (または established_session_timeout) 値と同じかそれ以上に設定されている場合は、特定の OID に対して単一の要求のみが送信されます。タイムアウト (または established_session_timeout) 値を変更する場合は、request_interval を同時に調整して、指定された環境に合わせて、同じ OID に対する要求が多くなりすぎたり少なくなりすぎたりしないようにします。400request_delay応答の受信と次の要求の送信との間の間隔 (ミリ秒単位) です。デフォルトは 0 (遅延なし) です。この値で、SNMP クエリーの全体的な速度を遅くするように設定することができます。0result_formatこれらのプローブの JSON 形式のペイロードを返します。 SNMP - F5 BIG-IP - システムSNMP - Netscaler - システムSNMP - ルーティング このパラメーターは、ペイロードが大きくなった場合に、ノード上のセンサー障害やメモリの問題を防ぐために、データをよりコンパクトな形式で返します。この値を変更したり、このパラメーターを削除したりしないでください。 注意:このパラメーターを他のプローブとともに使用すると、センサーに障害が発生します。 JSONuse_getbulk 複数の SNMP GETNEXT 要求を使用するのではなく、SNMP デバイスから表データを取得するための SNMP GETBULK 要求の使用を有効にします。表形式のデータでは、GETBULK の方が効率的です。要求タイプに関係なく、特定のデバイスは他のタスクでビジー状態の場合に何も結果を返さないことがあります。 このパラメーターは、プローブレベルでの設定に使用されます。また、GETBULK は、個々の MID サーバーまたはすべての MID サーバーに対してグローバルに設定することもできます。設定は、優先度の順にリストされます。 SNMP プローブパラメーターMID サーバー設定パラメーターMID サーバープロパティ use_getbulk が true に設定されている場合、established_session_timeout、request_interval、request_delay パラメーターは無視されます。 代わりに、retries パラメーターを使用できます。 タイムアウト設定は、use_getscalar で使用されているものと同じです。 デフォルトでは、次のプローブは GETBULK 要求を使用します (パラメーター値は true)。 SNMP - スイッチ - VlanSNMP - スイッチ - BridgePortTableSNMP - スイッチ - ForwardingTableSNMP - スイッチ - SpanningTreeTableSNMP - ネットワーク - ArpTableSNMP - レイヤー 2 プロトコルキャッシュSNMP - F5 BIG IP - システム (サービスマッピングのお客様のみ) 注意:これらのプローブのタイムアウトの値は 5000 です。 falseuse_getscalarSNMP デバイスからのスカラー値の簡単な取得と処理を有効にします。 use_getscalar が true に設定されている場合、established_session_timeout、request_interval、request_delay パラメーターは無視されます。 代わりに、retries と timeout パラメーターを使用できます。 タイムアウト設定は、use_getbulk で使用されているものと同じです。 falseretriesuse_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 センサーのネットワークインターフェイスの作成を処理します。 よくある問題と調査方法 MID サーバーの SNMP 問題のトラブルシューティングと SNMP ウォークの実行方法:KB0696727無線アクセスポイント (WAP) のディスカバリー:KB1511615 SNMP に関する FAQ 1) SNMP ディスカバリーは V3 認証情報をサポートしていますか? はい。認証情報タイプ「SNMPv3 認証情報」を使用して、V3 認証情報を設定できます。 2) 無線アクセスポイントのディスカバリーはサポートされていますか? はい、WAP が SNMP で応答することが予想される場合は、サポートされます。 そうでない場合は、サポートされません。その場合、WAP の親となるコントローラーをターゲットにすることを検討する必要があります。 3) SNMP デバイスのディスカバリーに時間がかかるのはなぜですか? 実行時はより多くの OID が必要になるため、デバッグ時と実行時の速度に違いが生じる場合があります。 ネットワークデバイス上の SNMP サービスは優先順位が低いため、デバイスが SNMP クエリに正しく応答しない可能性があります。 不整合や異常な動作が発生した場合は、Wireshark ログを収集して確認できます。 Additional InformationSNMP 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 の分類とプロパティ)