MID Server SNMP のトラブルシューティングIssue MID Server を使用して、CI をターゲットとする SNMP クエリを実行できます。MID Server SNMP は、Discovery、Service Mapping、Orchestration などの複数のアプリケーションで使用できます。この記事では、MID Server の SNMP の問題のトラブルシューティングに使用できるいくつかのツールについて説明します。 トラブルシューティングツール 多くの場合、SNMP を使用するアプリケーション (Discovery、Orchestration など) の問題は、SNMP データが完全に返されないか、まったく返されないことです。データが返された場合は、スクリプトインクルードやビジネスルールなど、アプリケーションの別の領域に焦点を当てる必要があります。したがって、SNMP に依存するアプリケーションの問題を調査するための良い出発点は、データが正常に収集されたかどうかを確認することです。 SNMP クエリーが目的のデータを収集しない主な理由は次の 2 つです。 無効な SNMP 資格情報SNMP クエリのタイムアウト データが返されるかどうかを確認するために使用できるツールには、次のようなものがあります。 MID Server ログSNMP ウォークツールWireshark 資格情報テスト SNMP 資格情報をテストするには [Discovery] > [Credentials] に移動します。SNMP Discovery に使用する SNMP 資格情報を選択しますUI リンクの [Test Credential] をクリックします。「ターゲット」と「MID Server」を入力します[OK] をクリックします。 注意:Shazzam プローブと SNMP 資格情報クエリ iso.org.dod.internet.mgmt.mib-2.system.sysDescr/1.3.6.1.2.1.1.1。ただし、SNMP プローブは、実際の SNMP 要求を実行する前に OIDmgmt.mib-2.system.sysObjectID/1.3.6.1.2.1.1.2 を要求して、資格情報が有効かどうかを判断します。ターゲットデバイスが正常に検出されるには、1.3.6.1.2.1.1.1 と 1.3.6.1.2.1.1.2 の両方に応答する必要があります。したがって、SNMP Discovery の問題をトラブルシューティングする場合は、両方の OID をテストします。 例 MID Server ログの確認 SNMP クエリの MID Server ログの詳細情報を取得するには、パラメータ mid.log.level = debugを追加します。 MID Server パラメータの追加 問題を再現し、MID Server のログファイルを確認します。MID Server ファイルの収集方法については、次の 2 つのドキュメントを参照してください。 MID Server の監視MID Server に対するECC キューコンテンツの管理 SNMP ログの詳細については、 「"agent\conf" フォルダ」に移動してください。 wrapper-override ファイルを開きます追加の Java パラメータに次の行を追加します。 wrapper.java.additional.201=-Dsnmp4j.LogFactory=com.service_now.mid.extension.trap.Snmp4j2DiscoLogFactory MID Server を再起動問題の再現 2 つのログの例を次に示します。最初の例は、SNMP - 分類プローブのすべての OID が返された成功したクエリからのものですが、2 番目の例は、一部の OID のみが返された部分的に成功したクエリからのものです。最初の分類プローブは、デフォルトのタイムアウト 1500 ミリ秒で実行されました。2 番目のプローブでは、タイムアウトをシミュレートするためにタイムアウトを 10 ミリ秒に設定しました。 成功した SNMP クエリーを示すログの例: 08/29/18 11:32:52 (911) Worker-Interactive:SNMP Worker starting: SNMP source: 08/29/18 11:32:52 (926) Worker-Interactive:SNMP DEBUG: Timeout: 1500, Retries: 2 08/29/18 11:32:53 (004) Worker-Interactive:SNMP DEBUG: Using GETBULK 08/29/18 11:32:53 (004) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.4.20.1.1, 1.3.6.1.2.1.4.20.1.2, 1.3.6.1.2.1.4.20.1.3], max rows: 10 08/29/18 11:32:53 (051) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.4.1.9.9.46.1.3.1.1.3], max rows: 10 08/29/18 11:32:53 (051) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.2.2.1.1, 1.3.6.1.2.1.2.2.1.2, 1.3.6.1.2.1.2.2.1.3, 1.3.6.1.2.1.2.2.1.6, 1.3.6.1.2.1.2.2.1.7, 1.3.6.1.2.1.2.2.1.8], max rows: 10 08/29/18 11:32:53 (114) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.47.1.1.1.1.11, 1.3.6.1.2.1.47.1.1.1.1.13, 1.3.6.1.2.1.47.1.1.1.1.2, 1.3.6.1.2.1.47.1.1.1.1.12, 1.3.6.1.2.1.47.1.1.1.1.4], max rows: 10 08/29/18 11:32:53 (161) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.4.22.1.1, 1.3.6.1.2.1.4.22.1.2, 1.3.6.1.2.1.4.22.1.3], max rows: 10 08/29/18 11:32:53 (161) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.25.3.2.1.2, 1.3.6.1.2.1.25.3.2.1.3], max rows: 10 08/29/18 11:32:53 (161) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.43.5.1.1.17], max rows: 10 08/29/18 11:32:53 (176) Worker-Interactive:SNMP DEBUG: Event: GenericScalarMetricEvent 08/29/18 11:32:53 (176) Worker-Interactive:SNMP DEBUG: Event: CheckSessionCanceledEvent, correlator: , sysID: 405c1f5cdb54a7008597d8c75e961967, canceled: false 08/29/18 11:32:53 (176) Worker-Interactive:SNMP Enqueuing: C:\ServiceNow\emprcoeljak\agent\work\monitors\ECCSender\output_0\ecc_queue.405c1f5cdb54a7008597d8c75e961967.xml 08/29/18 11:32:53 (176) Worker-Interactive:SNMP DEBUG: Event: GenericCounterMetricEvent 08/29/18 11:32:53 (192) Worker-Interactive:SNMP DEBUG: ** enqueued C:\ServiceNow\emprcoeljak\agent\work\monitors\ECCSender\output_0\ecc_queue.405c1f5cdb54a7008597d8c75e961967.xml 08/29/18 11:32:53 (192) Worker-Interactive:SNMP DEBUG: Event: MessageProcessedEvent, sysID: 405c1f5cdb54a7008597d8c75e961967 08/29/18 11:32:53 (192) Worker-Interactive:SNMP DEBUG: Event: SendMessageEvent, message: SNMP SNMP - Classify: 61 OIDs 08/29/18 11:32:53 (192) Worker-Interactive:SNMP Worker completed: SNMP source: time: 0:00:00.250 失敗した SNMP クエリーを示すログの例: 08/30/18 07:29:03 (997) Worker-Interactive:SNMP DEBUG: Timeout: 10, Retries: 2 08/30/18 07:29:03 (997) Worker-Interactive:SNMP DEBUG: Snmp4jSessionFactory: connection created for key SnmpSessionPoolKey[target: &port:161&fixed_cred:&tag:] 08/30/18 07:29:04 (075) Worker-Interactive:SNMP DEBUG: Using GETBULK 08/30/18 07:29:04 (075) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.4.22.1.1, 1.3.6.1.2.1.4.22.1.2, 1.3.6.1.2.1.4.22.1.3], max rows: 10 08/30/18 07:29:04 (075) Worker-Interactive:SNMP DEBUG: First attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.4.20.1.1, 1.3.6.1.2.1.4.20.1.2, 1.3.6.1.2.1.4.20.1.3], max rows: 10 08/30/18 07:29:04 (122) Worker-Interactive:SNMP DEBUG: First attempt of getTable failed on target: /161, OIDs: [1.3.6.1.2.1.4.20.1.1, 1.3.6.1.2.1.4.20.1.2, 1.3.6.1.2.1.4.20.1.3], error: Request timed out. 08/30/18 07:29:04 (122) Worker-Interactive:SNMP DEBUG: Second attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.4.20.1.1, 1.3.6.1.2.1.4.20.1.2, 1.3.6.1.2.1.4.20.1.3], max rows: 5 08/30/18 07:29:04 (169) Worker-Interactive:SNMP DEBUG: Second attempt of getTable failed on target: /161, OIDs: [1.3.6.1.2.1.4.20.1.1, 1.3.6.1.2.1.4.20.1.2, 1.3.6.1.2.1.4.20.1.3], error: Request timed out. 08/30/18 07:29:04 (169) Worker-Interactive:SNMP DEBUG: Third attempt of getTable on target: /161, OIDs: [1.3.6.1.2.1.4.20.1.1, 1.3.6.1.2.1.4.20.1.2, 1.3.6.1.2.1.4.20.1.3], max rows: 5, forcing GETNEXT pdu type 08/30/18 07:29:04 (215) Worker-Interactive:SNMP DEBUG: Event: GenericScalarMetricEvent 08/30/18 07:29:04 (215) Worker-Interactive:SNMP DEBUG: Event: CheckSessionCanceledEvent, correlator: , sysID: 561ea3acdbdca7008597d8c75e96191a, canceled: false 08/30/18 07:29:04 (215) Worker-Interactive:SNMP Enqueuing: C:\ServiceNow\emprcoeljak\agent\work\monitors\ECCSender\output_0\ecc_queue.561ea3acdbdca7008597d8c75e96191a.xml 08/30/18 07:29:04 (215) Worker-Interactive:SNMP DEBUG: Event: GenericCounterMetricEvent 08/30/18 07:29:04 (231) Worker-Interactive:SNMP DEBUG: ** enqueued C:\ServiceNow\emprcoeljak\agent\work\monitors\ECCSender\output_0\ecc_queue.561ea3acdbdca7008597d8c75e96191a.xml 08/30/18 07:29:04 (231) Worker-Interactive:SNMP DEBUG: Event: MessageProcessedEvent, sysID: 561ea3acdbdca7008597d8c75e96191a 08/30/18 07:29:04 (231) Worker-Interactive:SNMP DEBUG: Event: SendMessageEvent, message: SNMP SNMP - Classify: 12 OIDs 08/30/18 07:29:04 (231) Worker-Interactive:SNMP Worker completed: SNMP source: time: 0:00:00.218 上記の例では、設定された短いタイムアウトが原因で一部のプローブがタイムアウトしていることがわかります。 SNNP Walk ツール SNMP ツールを使用すると、結果が期待どおりに返されるかどうかを確認できます。OID の取得に失敗または部分的に成功した場合は、MID Server の SNMP 実装に問題がないことがさらに確認されますが、サードパーティツールを使用して一貫して成功した場合は、MID Server ログをレビューして潜在的な問題を探す必要があります。次の例では、MID Server から OID 1.3.6.1.2.1.1.1 に対してクエリが実行されます。この OID は sysDescr であり、デバイスの説明を返します。使用する SNMP ツールによってコマンドが異なる場合があることに注意してください。 次の例では SnmpWalk.exe を使用していますが、資格情報が「publi」 に設定されています。これはこのデバイスの誤ったコミュニティ文字列です。この例の正しいパブリック文字列は、public となるべきです。 C:\SNMPWalk>.\SnmpWalk.exe -r:10.127.212.181 -c:"publi" -os:.1.3.6.1.2.1.1 -op: です。 .1.3.6.1.2.1.1.1.0SNMP 変数の値の取得に失敗しました。タイムアウトしました。 上記のように、資格情報の失敗エラーはありません。エラーの代わりに、クエリは最終的にタイムアウトします。 次の例では、公開文字列public が修正されました。 C:\SNMPWalk>.\SnmpWalk.exe -r:10.127.212.181 -c:"public" -os:.1.3.6.1.2.1.1 -op:.1.3.6.1.2.1.1.1.0OID=.1.3.6.1.2.1.1.1.0、Type=OctetString、Value=Linux Linux-Tomcat 3.10.0-327.el7.x86_64 31 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 上記のとおり、公開文字列が修正されると sysDescr が返されました。タイムアウトではなく、その一部のみが上に表示されています。 注意: MID Server がインストールされているのと同じホストから、資格情報の同じ構成を使用してテストを実行することが重要です ネットワークトラフィック監視ツール (Wireshark の例) ネットワークトラフィック監視ツールを使用すると、問題が見つかった場所を特定するのに役立ちます。たとえば、パケットが送信されたかどうかや、返されたかどうかを確認できます。 セットアップ: https://www.wireshark.org/download.htmlから Wireshark をダウンロードしてインストールします。インストールしたら、アプリケーションアイコンをダブルクリックしてアプリケーションを起動します。トラフィックの収集に使用するインターフェイスを選択します。次の画像では、[イーサネット] が選択されています。 次の例では、テーブルmgmt.mib-2.printmib.prtMarkerColorant.prtMarkerColorantTable prtMarkerColorantValue の SNMP クエリのトラフィックを確認します。 ecc_queue レコードから、返された内容を確認できます。 表示フィルター「udp && ip.addr == <target_ip>」を使用して、ターゲットデバイスへの SNMP トラフィックのみをフィルタリングします (スクリーンショットでは、パケットが収集された後にループバック IP に置き換えられています)。 次のスクリーンショットは、いずれかの OID についてデバイスから返されたデータの詳細を示しています。 注意:Wireshark にはキャプチャフィルターと表示フィルターの両方があります。 https://wiki.wireshark.org/CaptureFiltersによると、「キャプチャフィルター (TCP ポート 80 など) を表示フィルター (tcp.port == 80 など) と混同しないでください。前者ははるかに制限されており、生のパケットキャプチャのサイズを小さくするために使用されます。後者は、一部のパケットをパケットリストから非表示にするために使用されます。キャプチャフィルターは、パケットキャプチャを開始する前に設定され、キャプチャ中に変更することはできません。一方、表示フィルターにはこの制限がなく、オンザフライで変更できます。」システムパフォーマンスの観点から、大きなパケットのキャプチャを実行する前にキャプチャフィルターを設定すると便利です。 Wireshark SNMPv3 を復号化 SNMPv3 トラフィックは暗号化されているため、レビューのために復号化する必要があります。次の手順では、メモリ内のパケットのみを復号化することに注意してください。 1.Wireshark アプリケーションを使用して、キャプチャされたパケットを開きます。 2.[Edit] > [Preferences] > [Protocols] に移動します。 3.プロトコルリストから [SNMP] を選択します。 4.[ユーザーテーブル] をクリックして [編集] します。5.[Add] ボタンをクリックし、次の詳細を入力します。 エンジン ID (この値は暗号化されていないため、wireshark 暗号化キャプチャからエンジン ID を収集できます。これを行うには、SNMP パケットヘッダーを開き、エンジン ID 文字列を確認します)。SNMPv3 ユーザー名。認証モデル (MD5 | SHA1) を選択します。認証モデルのパスワードを入力します。プライバシープロトコル (DES | AES | AES192 | AES256) を選択します。プライバシーパスワードを入力します。パケットコンテンツを復号化する必要があります。 ソリューション 正しい資格情報の確認 不正確な資格情報は、多くの場合、根本原因です。SNMP v1/v2 は、コミュニティ文字列のみを使用するため、構成が簡単です。SNMP v3 の場合、設定されたユーザー名、認証プロトコル、認証キー、プライバシープロトコル、およびプライバシーキーがすべてターゲットデバイスで設定されているものと一致していることを確認します。サードパーティの SNMP ウォークツールを使用して、資格情報が正しいことを確認することもできます。 SNMP タイムアウトを増やす デバイスがタイムアウト設定内に応答できない場合があります。または、ネットワークの問題が発生している可能性があります。ほとんどの場合、タイムアウトを増やすと、OID を取得できるようになります。SNMP タイムアウトは、MID Server ごとに設定することも、プローブで直接設定することもできます。 プローブと MID Server で使用可能なパラメーターについては、次のドキュメントを参照してください SNMP プローブMID Server SNMP 構成パラメーター 範囲外の応答 一部のデバイスでは、「Start OID」を構成できます。このようなデバイスに対してウォークが実行されると、Start OID が返されます。返された OID は要求された範囲内になく、実際にはウォークの対象となる値ではないため、値は使用されません。このような構成では、資格情報が正しい場合でも、結果はプローブに返されません。プローブはデバイスを分類および更新するために特定の値を要求するため、これは想定される動作であり、要求された範囲外のものは無視されます。 MID がデバッグに設定されている場合、次の例のようなログが MID Server で表示されます。 DefaultUDPTransportMapping_0.0.0.0/0 DEBUG:応答が範囲外です。Received: iso.org.dod.internet.private.enterprises.f5.bigipTrafficMgmt.bigipSystem.sysGlobals.sysGlobalAttrs.sysGlobalAttr.sysAttrArpMaxEntries.0 (1.3.6.1.4.1.3375.2.1.1.1.1.1.1.1.1.1.1.1.0)範囲は 1.3.6.1.2.1.1.2 - 1.3.6.1.2.1.1.3 です。要求 ID:1853998886 上記の例では、要求は OD 1.3.6.1.2.1.1.2 ~ 1.3.6.1.2.1.1.3 に対するものですが、デバイスは 1.3.6.1.4.1.3375.2.1.101.1.1.3375.1.1.1.3 を返しました。 注意: OID 1.3.6.1.4.1.3375.2.1.1.1.1.1.0 は単なる例であり、場合によっては異なる値になる可能性があります。 この問題を解決するには、デバイス構成を確認し、必要に応じてデバイスが要求された適切な OID を返すように調整してください。特定の手順はデバイスによって異なるため、提供することはできません。 コンテキスト 一部のプローブは、Cisco デバイスを検出するときにコンテキストを使用して情報を収集する必要があります。たとえば、SNMP - スイッチプローブによってトリガーされたプローブは、各 VLAN の情報を収集するためにコンテキスト情報を渡す必要があります。コンテキストがないと、デフォルトの VLAN 情報のみが返されます。 SNMP - スイッチプローブ認証エラーとレイヤー 2 データが収集されないSNMPv3 が に関する情報を収集できないデフォルト以外の VLAN のレイヤー 2 テーブル (Cisco スイッチのみ)Related LinksDiscovery:詳細 - SNMP 分類機能とプロパティ Discovery が SNMP デバイスのシリアル番号を返さないことがある理由 Discovery がのシリアル番号を返さないことがある理由SNMP プローブ