オンライン診断システム (ODS) 機能は、ランタイムの NSX のデバッグを自動化します。ODS は、NSX に組み込まれたランブックを介して実装されます。ランブックにはデバッグ手順が含まれており、NSX コンポーネントを完全に観測できます。ランブックはデバッグ レポートを生成します。また、パケット キャプチャ、ユーザー プロセスのライブ コア ダンプ、スクリプトやツールの出力など、問題のランタイム アーティファクトも生成します。これらのアーティファクトは後で収集し、オフライン分析やデバッグに使用できます。事前定義のランブックは変更できないことに注意してください。
API を使用して次のランブック操作を実行できます。
- ランブックを呼び出してランタイム デバッグを開始する
- デバッグ レポートを確認する
- 呼び出されたランブックによって生成されたアーティファクトをダウンロードする
- ランブックのライフサイクルを管理する
事前定義のランブック
NSX 4.1.1 以降では、Unified Appliance (UA) でも ODS がサポートされます。次の表に、Runbook と、ランブックを実行できるノードを示します。
ランブック | 説明 | ノード | バージョン | |
---|---|---|---|---|
PnicPerf | このランブックは、物理 NIC の TX および RX のパフォーマンスの問題を特定できます。 このランブックは、診断される論理ポートの ID を入力引数として使用します。 |
ESXi | 4.1 | |
OverlayTunnel | このランブックは、ゲートウェイ構成エラー、トンネルが見つからない、トンネルが停止するなど、オーバーレイ トンネルの障害を特定できます。 このランブックは、送信元 VTEP の IP アドレスと宛先 VTEP の IP アドレスを入力引数として使用します。 |
ESXi | 4.1 | |
PortBlock | このランブックは、ポート ブロックの原因を特定できます。たとえば、LSP/LS 構成が正しくないために DVPort がブロックされる可能性があります。 | ESXi | 4.1 | |
AdfCollect | このランブックは、ADF コレクタから ESXi データパス パフォーマンス データを収集します。 このランブックは次の入力引数を使用します。
|
ESXi | 4.1 | |
ControllerConn | このランブックは、コントローラの障害、プロキシの障害、アンダーレイ ネットワークの停止、FQDN 解決の失敗によって発生したコントローラ接続の問題を特定できます。 このランブックは、ESXi ホストの IP アドレスとコントローラの IP アドレスを入力引数として使用します。 |
ESXi | 4.1 | |
NxgiPlatform | この Runbook は、分散 MPS、エンドポイント保護、IDFW、IDS、Intelligence など、さまざまな機能を利用する NXGI プラットフォーム データパスの問題を診断します。 この Runbook は、入力引数として機能します。これは、チェックまたはデバッグが必要な特定の NXGI 依存機能(MPS、IDFW、IDS、EPP、Intelligence の 1 つで、EPP がデフォルト)です。 |
ESXi | 4.1.1 | |
VifInfo | このランブックは、他の Runbook への入力として使用できる仮想インターフェイスに関する詳細情報を取得します。 このランブックは、VIF を入力引数として使用します。 |
ESXi | 4.1.1 | |
EdgeHealth |
この Runbook は、次の機能を実行します。
このランブックに入力引数はありません。 |
Edge | 4.1.1 | |
MacAddressInfo |
この Runbook は、特定の MAC アドレスに関連する問題を診断し、ホスト スイッチのパフォーマンスの問題を確認して修正します。次の機能を実行します。
この Runbook は、入力引数として host-switch 名と mac-address を取得します。 |
ESXi | 4.1.1 | |
EdgeDpBfd | このランブックは、NSX Edge BFD の問題をトリアージします。 このランブックは、BFD セッションの送信元 IP アドレスと宛先 IP アドレスを入力引数として取得します。また、セッションに固有の BFD パケットのみがフィルタリングおよびキャプチャされるように、capture をオプションの引数として使用します。 |
Edge | 4.1.1 | |
DistributedMps | このランブックは、Malware Prevention Service (MPS) パイプラインの健全性を検証し、特定の仮想マシンで保護が機能しない、特定のファイルがスキャンされていない、などの MPS で発生した問題を診断します。 このランブックの入力引数は、保護状態を診断する仮想マシンの仮想マシン UUID です。 |
ESXi | 4.1.1 | |
DuplicateVtepDetectorProvider | このランブックは、VTEP 内の重複する IP アドレスまたはラベルを検出します。 このランブックに入力引数はありません。 |
UA | 4.1.1 | |
LspStaleInfo | この Runbook は、古い論理ポートを取得します。 このランブックに入力引数はありません。 |
UA | ||
BgpNeighborState | このランブックは、BGP ネイバーが停止する原因となるさまざまなフローを診断します。Runbook は、オフライン デバッグのために次のサポートアーティファクトも収集します。
このランブックは次の入力引数を使用します。
|
Edge | 4.1.1 | |
PimMrouteState | このランブックは、さまざまな理由で発生する可能性のあるマルチキャスト トラフィックの損失をトリアージします。 マルチキャスト トラフィックの送信元 IP アドレスとマルチキャスト トラフィックのグループ IP アドレスを指定すると、このランブックは問題の根本原因を特定し、オフライン デバッグのためにサポートするアーティファクトを収集するのに役立ちます。 この Runbook は、送信元 IP アドレス、グループ IP アドレス、トラフィック方向を入力引数として使用します。 |
Edge | 4.1.1 | |
OspfNbrState | このランブックは、さまざまな論理フローを診断して、ospf ネイバーの状態の問題をトリアージします。 この Runbook は、ネイバー IP アドレスを入力引数として使用します。 |
Edge | 4.1.1 | |
IdpsDpStatus | この Runbook は、IDPS/IDS モジュール(コンテキスト エンジン)と IDPS エンジンの両方のステータスを確認します。また、ロードされたプロファイル、ルール、シグネチャ、および IDPS モジュールと IDPS エンジン モジュールの両方でキャプチャされたイベントも比較します。 このランブックに入力引数はありません。 |
ESXi | 4.1.1 | |
NxgiPlatformUA | このランブックは、分散 MPS、エンドポイント保護、IDFW、IDS、Intelligence などのさまざまな機能を利用する NXGI プラットフォームの管理プレーンの問題を診断します。この Runbook は、トランスポート ノードで実行される NxgiPlatform Runbook と組み合わせて使用できます。 この Runbook は、オプションの入力引数としてトランスポート ノード ID を取得します。 |
UA | 4.1.1 | |
CorfuServer | このランブックは、Corfu サーバ レイアウトの安定性、インフラストラクチャの ping とディスク I/O 条件、コンパクタの健全性を確認します。 ログ イベントのデフォルトのルック バックの日数または時間をオーバーライドするには、この Runbook は、入力引数としてルックバック日数とルックバック時間を取ります。 |
UA | 4.1.1 | |
EdgeIDPS | この Runbook は、Edge に存在する IDS/IPS シグネチャの統計情報を確認して取得します。 このランブックは、シグネチャ ID を入力引数として使用します。 |
Edge | 4.1.1 | |
EdgeRouting | この Runbook は、特定の論理ルーターの健全性の複数の側面をチェックし、健全性が良好でない Edge プロセスのリストを提供します。Runbook は、North/South の一般的なルーティングの問題のトラブルシューティングの手順を提供します。 Runbook はさまざまな情報を収集し、ルーティング プロトコル、トンネル、およびポートのステータスを報告します。Edge のルーティングで使用されるルーティング スタックとさまざまなデーモンの健全性チェックを実行します。指定された宛先 IP アドレスについて、RIB、FIB、ARP テーブルを確認します。また、送信元と宛先の IP アドレスを使用して ping と traceroute を実行します。
このランブックは次の入力引数を使用します。
|
Edge | 4.1.1 | |
PimConfigCheck |
このランブックは、Edge が routing_config_error をスローしたときの正確なエラーの詳細情報を提供します。また、これは問題のトリアージにも役立ちます。 このランブックに入力引数はありません。 |
Edge | 4.1.1 | |
NCPPendingPod | このランブックは、保留中の状態でスタックしたポッドをデバッグします。 このランブックは、保留中のポッドの名前空間と名前を入力引数として使用します。 |
ESXi | 4.1.2 | |
PortStatusInfo | このランブックは、vSwitch に接続されているポートの問題を識別します。 このランブックは、ポートの詳細を取得するための入力引数として VIF ID を使用します。 |
ESXi | 4.2.1 |
ランタイムでのデバッグ手順
ランタイムでデバッグするには、次の手順を実行します。
- 手順 1:事前定義のランブックのリストを取得します。
-
次の API を実行して、事前定義のランブックのリストを取得します。
GET https://<nsx-mgr>/policy/api/v1/infra/sha/pre-defined-runbooks
この API は、事前定義のランブックのリストと次の情報を返します。
- 構成の詳細。
- ランブックがサポートされているノード タイプ。
- ID、名前、パスなど、ランブックの全般的な詳細。
- パラメータの詳細(ランブックの呼び出し時に必要な場合)。
応答の例:
{ "results": [ { "version": { "major": 1, "minor": 0 }, "default_config": { "enabled": true, "timeout": 300, "threshold_number": 5, "throttle_cycle": 10 }, "supported_node_types": [ "nsx-esx" ], "parameters": [ { "name": "advanced", "optional": true, "parameter_type": "BOOLEAN", "default_value": "False" }, { "name": "cycle", "optional": false, "parameter_type": "INTEGER", "max": "20", "min": "1" }, { "name": "interval", "optional": true, "parameter_type": "INTEGER", "max": "300", "min": "1" } ], "resource_type": "OdsPredefinedRunbook", "id": "00000000-0000-4164-6643-6f6c6c656374", "display_name": "AdfCollect", "path": "/infra/sha/pre-defined-runbooks/00000000-0000-4164-6643-6f6c6c656374", "relative_path": "00000000-0000-4164-6643-6f6c6c656374", "parent_path": "/infra", "remote_path": "", "unique_id": "069a4c7b-532a-4926-a402-6a7986a306b2", "realization_id": "069a4c7b-532a-4926-a402-6a7986a306b2", "owner_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "origin_site_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "marked_for_delete": false, "overridden": false, "_create_time": 1669600880454, "_create_user": "system", "_last_modified_time": 1669600880454, "_last_modified_user": "system", "_system_owned": false, "_revision": 0 }, { "version": { "major": 1, "minor": 0 }, "default_config": { "enabled": true, "timeout": 60, "threshold_number": 5, "throttle_cycle": 3 }, "supported_node_types": [ "nsx-esx" ], "resource_type": "OdsPredefinedRunbook", "id": "0000436f-6e74-726f-6c6c-6572436f6e6e", "display_name": "ControllerConn", "path": "/infra/sha/pre-defined-runbooks/0000436f-6e74-726f-6c6c-6572436f6e6e", "relative_path": "0000436f-6e74-726f-6c6c-6572436f6e6e", "parent_path": "/infra", "remote_path": "", "unique_id": "3914cbe4-41b4-45f1-9dad-2bd96a2de0d8", "realization_id": "3914cbe4-41b4-45f1-9dad-2bd96a2de0d8", "owner_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "origin_site_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "marked_for_delete": false, "overridden": false, "_create_time": 1669600880493, "_create_user": "system", "_last_modified_time": 1669600880493, "_last_modified_user": "system", "_system_owned": false, "_revision": 0 }, { "version": { "major": 1, "minor": 0 }, "default_config": { "enabled": true, "timeout": 120, "threshold_number": 5, "throttle_cycle": 5 }, "supported_node_types": [ "nsx-esx" ], "parameters": [ { "name": "src", "optional": false, "parameter_type": "COMPOUND" }, { "name": "dst", "optional": false, "parameter_type": "COMPOUND" } ], "resource_type": "OdsPredefinedRunbook", "id": "0000004f-7665-726c-6179-54756e6e656c", "display_name": "OverlayTunnel", "path": "/infra/sha/pre-defined-runbooks/0000004f-7665-726c-6179-54756e6e656c", "relative_path": "0000004f-7665-726c-6179-54756e6e656c", "parent_path": "/infra", "remote_path": "", "unique_id": "3597af28-e670-456e-8347-4d1a53a5cb90", "realization_id": "3597af28-e670-456e-8347-4d1a53a5cb90", "owner_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "origin_site_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "marked_for_delete": false, "overridden": false, "_create_time": 1669600880518, "_create_user": "system", "_last_modified_time": 1669600880518, "_last_modified_user": "system", "_system_owned": false, "_revision": 0 }, { "version": { "major": 1, "minor": 0 }, "default_config": { "enabled": true, "timeout": 120, "threshold_number": 5, "throttle_cycle": 5 }, "supported_node_types": [ "nsx-esx" ], "parameters": [ { "name": "lsp", "optional": false, "parameter_type": "STRING" } ], "resource_type": "OdsPredefinedRunbook", "id": "00000000-0000-0000-506e-696350657266", "display_name": "PnicPerf", "path": "/infra/sha/pre-defined-runbooks/00000000-0000-0000-506e-696350657266", "relative_path": "00000000-0000-0000-506e-696350657266", "parent_path": "/infra", "remote_path": "", "unique_id": "53f29b77-dcf5-4561-85ec-8f35280e3f3a", "realization_id": "53f29b77-dcf5-4561-85ec-8f35280e3f3a", "owner_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "origin_site_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "marked_for_delete": false, "overridden": false, "_create_time": 1669600880553, "_create_user": "system", "_last_modified_time": 1669600880553, "_last_modified_user": "system", "_system_owned": false, "_revision": 0 }, { "version": { "major": 1, "minor": 0 }, "default_config": { "enabled": true, "timeout": 60, "threshold_number": 5, "throttle_cycle": 3 }, "supported_node_types": [ "nsx-esx" ], "parameters": [ { "name": "vif", "optional": false, "parameter_type": "STRING" } ], "resource_type": "OdsPredefinedRunbook", "id": "00000000-0000-0050-6f72-74426c6f636b", "display_name": "PortBlock", "path": "/infra/sha/pre-defined-runbooks/00000000-0000-0050-6f72-74426c6f636b", "relative_path": "00000000-0000-0050-6f72-74426c6f636b", "parent_path": "/infra", "remote_path": "", "unique_id": "6f411a92-30c0-4838-9758-c00220cb5fab", "realization_id": "6f411a92-30c0-4838-9758-c00220cb5fab", "owner_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "origin_site_id": "f2a2a9e1-2578-435d-877d-47e01eb04954", "marked_for_delete": false, "overridden": false, "_create_time": 1669600880572, "_create_user": "system", "_last_modified_time": 1669600880572, "_last_modified_user": "system", "_system_owned": false, "_revision": 0 } ], "result_count": 5, "sort_by": "display_name", "sort_ascending": true }
上記の応答では、次の事前定義のランブックが返されます。- AdfCollect
- ControllerConn
- OverlayTunnel
- PnicPerf
- PortBlock
ランブックの呼び出し時にパラメータが必要な場合、パラメータの詳細が parameters キーに示されます。たとえば、オーバーレイ トンネル ランブックでは、診断するトンネルのローカル VTEP IP アドレスとリモート VTEP IP の 2 つのパラメータ(source と destination)が必要です。
- 手順 2:ランブックのパラメータの詳細を取得します。
-
次の API を実行して、呼び出すランブックのパラメータの詳細を取得します。
- 手順 3:ランブックを呼び出します。
-
次の API を実行してランブックを呼び出します。
POST https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>
要求の例:オーバーレイ トンネル ランブックの呼び出し。
POST https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/OverlayTunnel { "runbook_path": "/infra/sha/pre-defined-runbooks/0000004f-7665-726c-6179-54756e6e656c", "target_node": "6c7a9374-459d-46b2-9ea6-c63b37c7cc38", "arguments": [ { "key": "src", "value": "192.168.0.11" }, { "key": "dst", "value": "192.168.0.10" } ] }
- 手順 4:呼び出されたランブックのレポートを確認します。
-
次の API を呼び出して、呼び出されたランブックのレポートを取得します。
GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>/report
要求の例:
GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/OverlayTunnel/report
応答の例:
{ "invocation_id": "70527fed-1e5e-4fed-a880-28cde04a66b1", "target_node": "6c7a9374-459d-46b2-9ea6-c63b37c7cc38", "timestamp": 1662469099, "sys_info": { "host_name": "sc2-10-185-4-158.eng.vmware.com", "os_name": "VMkernel", "os_version": "7.0.3" }, "result_message": "Tunnel 192.168.0.11 -> 192.168.0.10 is in up state", "recommendation_message": "No changes required as the tunnel is in up state.", "step_details": [ { "step_id": 1, "action_summary": "Check the status of tunnel for the given source/destination VTEPs.", "action_result": "Tunnel 192.168.0.11 -> 192.168.0.10 is in state up" } ], "status": { "request_status": "SUCCESS", "operation_state": "FINISHED" } }
応答では、タイムスタンプなどのメタデータ情報やの一部や、ホスト名、オペレーティング システムなどのシステムの詳細が返されます。また、このレポートでは、デバッグの結果と修正の提案(ある場合)の他に、デバッグで実行された手順、各手順のアクション サマリとアクション結果が返されます。何らかの理由でデバッグが中断された場合、operation_state フィールドに、中断の理由を定義する値が入ります。ランブックの呼び出しが成功しない場合、レポートにはエラーの詳細が表示され、デバッグ関連のフィールドは表示されません。
- 手順 5:アーティファクトをダウンロードします。
-
- 次の API を実行してアーティファクトを収集します。
POST https://{{mgr-ip}}/policy/api/v1/infra/sha/runbook-invocations/{{invocation-name}}
要求の例:POST https://{{mgr-ip}}/policy/api/v1/infra/sha/runbook-invocations/{{invocation-name}} { "runbook_path": "/infra/sha/pre-defined-runbooks/00000000-0000-4164-6643-6f6c6c656374", "target_node": "{{target-node}}", "arguments": [ { "key": "advanced", "value": "{{advanced-mode}}" }, { "key": "cycle", "value": "{{cycle-count}}" }, { "key": "interval", "value": "{{interval-in-sec}}" } ] }
呼び出し時に advanced パラメータが false に設定されている場合、ランブックはトポロジ情報、ネットワークの統計情報、NSX DP 統計情報、アップリンク情報を収集します。advanced パラメータが true に設定されている場合、ランブックは vmkstats などの高度なパフォーマンス ツールを実行します(物理マシンでのみ使用可能)。
cycle パラメータは、呼び出しで ADF コレクタが実行される回数を定義します。
interval パラメータは、連続する ADF コレクタの実行間の待機間隔を定義します。これは、cycle パラメータが 1 より大きい値に設定されている場合にのみ有効になります。
応答の例:
{ "invocation_id": "80a0037a-52e1-48d7-b28e-c3bfb8475e8c", "target_node": "b794f78f-7eb0-433f-8f11-63e6b3121c28", "timestamp": 1668674073, "sys_info": { "host_name": "sc2-rdops-vm06-dhcp-204-101.eng.vmware.com", "os_name": "VMkernel", "os_version": "7.0.3" }, "result_message": "ADF data collection runbook completes.", "recommendation_message": "No action needs to be taken.", "step_details": [ { "step_id": 1, "action_summary": "Run ADF collector.", "action_result": "ADF data collection is successfully performed in the following time point(s) along with the following artifact(s): [(2022-11-17 08:35:30, a44f0446-0ac3-4e7f-8513-fb1248985d9e.tar)]", "artifacts": [ "a44f0446-0ac3-4e7f-8513-fb1248985d9e" ] } ], "status": { "request_status": "SUCCESS", "operation_state": "FINISHED" } }
- 次の API を実行してアーティファクトをダウンロードします。
GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>/artifact
ランブックがアーティファクトを生成した場合、API はバンドルされたファイルを返します。それ以外の場合はエラー メッセージを返します。バイナリ応答を tar.gz ファイルに保存します。このファイルには、ランブック呼び出しレポート (JSON) と tar ファイル(実行された ADF コレクション)が含まれています。
- 次の API を実行してアーティファクトを収集します。
ランブックの構成の変更
トランスポート ノード (TN) グループが最初に作成され、このグループに Runbook プロファイルがバインドされます。ランブックの構成を変更すると、ランブック プロファイルがバインドされているすべてのノードで変更されます。ランブックが有効かどうか、デバッグ タイムアウト、ランブックをスロットル サイクル メカニズムを使用して呼び出すことができる頻度を構成できます。スロットル サイクル メカニズムは、ランブックを特定の時間内に実行できる回数を指定します。
1 つのランブックのプロファイルは 1 つだけですが、ノードには、それが属する TN グループに応じて複数のランブック プロファイルが存在する場合があります。この場合、優先順位が最も高いプロファイルがノードに適用されます。
ランブック構成を変更するには、次の手順を実行します。
- 手順 1:ESXi の TN グループを作成します。
-
次の API を実行して、TN グループを作成します。
PATCH https://<nsx-mgr>/policy/api/v1/infra/domains/default/groups/<group-name>
要求の例:
PATCH https://<nsx-mgr>/policy/api/v1/infra/domains/default/groups/<group-name> { "expression": [ { "paths": [ "/infra/sites/default/enforcement-points/default/host-transport-nodes/TN1" ], "resource_type": "PathExpression" } ], "extended_expression": [], "reference": false, "group_type": [], "resource_type": "Group" }
- 手順 2:ランブック プロファイルの構成を変更し、TN グループをプロファイルにバインドします。
-
次の API を実行して構成を変更します。
PATCH https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-profiles/<profile-name>
要求の例:
PATCH https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-profiles/<profile-name> { "runbook_path": "/infra/sha/pre-defined-runbooks/0000004f-7665-726c-6179-54756e6e656c", "applied_to_group_path": "/infra/domains/default/groups/tngroup2", "config": { "enabled": true, "timeout": 120, "threshold_number": 2, "throttle_cycle": 6 } }
この例では、throttle_cycle は 6 分、threshold_number は 2 です。つまり、6 分以内にランブックを呼び出すことができるのは 2 回までです。
ODS API の詳細については、『NSX Intelligence と NSX Application Platform API ガイド』を参照してください。