ODS(온라인 진단 시스템) 기능은 런타임 시 NSX 디버깅을 자동화합니다. ODS는 NSX에 내장된 런북(runbook)을 통해 구현됩니다. 런북(runbook)에는 디버깅 절차가 포함되어 있으며 NSX 구성 요소에 대한 완전한 가시성이 있습니다. 런북(runbook)은 디버깅 보고서를 생성합니다. 또한 패킷 캡처, 사용자 프로세스의 라이브 코어 덤프, 스크립트 및 도구 출력과 같은 문제의 런타임 아티팩트를 생성합니다. 이러한 아티팩트를 나중에 수집하여 오프라인 분석 및 디버깅에 사용할 수 있습니다. 미리 정의된 런북(runbook)은 수정할 수 없습니다.

API를 사용하여 다음 런북(runbook) 작업을 수행할 수 있습니다.

  • 런북(runbook)을 호출하여 런북(runbook) 디버깅 시작
  • 디버깅 보고서 확인
  • 호출된 런북(runbook)에서 생성된 아티팩트 다운로드
  • 런북(runbook)의 수명 주기 관리

미리 정의된 런북(runbook)

NSX 4.1.1부터 UA(Unified Appliance)에도 ODS가 지원됩니다. 다음 표에는 런북(runbook)과 실행할 수 있는 노드도 나열되어 있습니다.

표 1.
런북(runbook) 설명 노드 버전
PnicPerf 이 런북은 pNIC TX 및 RX 성능 문제를 식별할 수 있습니다.

이 런북은 입력 인수로 진단할 논리적 포트의 ID를 사용합니다.

ESXi 4.1
OverlayTunnel 이 런북은 게이트웨이 구성 오류 터널 누락, 터널 다운과 같은 오버레이 터널 실패를 식별할 수 있습니다.

이 런북은 소스 VTEP의 IP 주소와 대상 VTEP의 IP 주소를 입력 인수로 사용합니다.

ESXi 4.1
PortBlock 이 런북은 잘못된 LSP/LS 구성으로 인해 DVPort가 차단될 수 있는 것과 같은 포트 차단의 원인을 식별할 수 있습니다. ESXi 4.1
AdfCollect 이 런북은 ADF 수집기를 통해 ESXi 데이터 경로 성능 데이터를 수집합니다.

이 런북에는 다음과 같은 입력 인수가 사용됩니다.

  • 고급: 고급 성능 도구의 사용 여부입니다.
  • 주기: ADF 수집 주기 수입니다.
  • 간격: 연속 ADF 수집 주기 간 대기 간격(초)입니다.
ESXi 4.1
ControllerConn 이 런북은 컨트롤러 장애, 프록시 장애, 언더레이 네트워크 중단 또는 FQDN 확인 실패로 인한 컨트롤러 연결 문제를 식별할 수 있습니다.

이 런북은 ESXi 호스트의 IP 주소와 컨트롤러의 IP 주소를 입력 인수로 사용합니다.

ESXi 4.1
NxgiPlatform

이 런북(runbook)은 분산 MPS, 끝점 보호, IDFW, IDS 및 Intelligence와 같은 다양한 기능을 제공하는 NXGI 플랫폼 데이터 경로 문제를 진단합니다.

이 런북(runbook)은 기능을 입력 인수로 사용합니다. 이것은 확인하거나 디버그해야 하는 특정 NXGI 종속 기능(EPP가 기본값인 MPS, IDFW, IDS, EPP 및 Intelligence 중 하나)입니다.

ESXi 4.1.1
VifInfo

이 런북(runbook)은 다른 런북(runbook)에 대한 입력으로 사용할 수 있는 가상 인터페이스에 대한 자세한 정보를 가져옵니다.

이 런북(runbook)은 VIF를 입력 인수로 사용합니다.

ESXi 4.1.1
EdgeHealth
이 런북은 다음과 같은 기능을 수행합니다.
  • 배포 및 업그레이드 중에 발생하는 일반적인 Edge 다운 문제를 심사합니다.
  • Edge 노드를 정상 상태로 되돌리고 정상 작동을 재개하는 해결 방법을 제안합니다.

이 런북에는 입력 인수가 없습니다.

Edge 4.1.1
MacAddressInfo
이 런북(runbook)을 사용하여 특정 MAC 주소와 관련된 문제를 진단하고 호스트 스위치의 성능 문제를 확인하고 수정합니다. 다음 기능을 수행합니다.
  • 지정된 MAC 주소 및 호스트 스위치의 경우 이 런북(runbook)은 호스트 스위치 MAC 주소 테이블에서 MAC 주소 세부 정보(예: MAC, VLAN, VNI 및 portID)를 가져오고 MAC이 없는 경우 진단을 제공합니다.
  • VNIC에서 사용되는 지정된 고정 MAC 주소의 경우 VNIC 포트의 VLAN 및 VNI 정보도 검색합니다.

이 런북(runbook)은 host-switch 이름 및 mac-address를 입력 인수로 사용합니다.

ESXi 4.1.1
EdgeDpBfd

이 런북(runbook)은 NSX Edge BFD 문제를 심사합니다.

이 런북(runbook)은 BFD 세션의 소스 IP 및 대상 IP를 입력 인수로 사용합니다. 또한 캡처를 선택적 인수로 사용하여 세션과 관련된 BFD 패킷만 필터링 및 캡처되도록 합니다.

Edge 4.1.1
DistributedMps

이 런북(runbook)은 MPS(맬웨어 차단 서비스) 파이프라인의 상태를 확인하고 특정 VM에서 보호가 작동하지 않거나 검색되지 않는 특정 파일 등과 같은 MPS에서 발생하는 모든 문제를 진단합니다.

이 런북(runbook)에 대한 입력 인수는 보호를 위해 진단할 VM의 VM UUID입니다.

ESXi 4.1.1
DuplicateVtepDetectorProvider

이 런북은 VTEP에서 중복된 IP 또는 레이블을 감지합니다.

이 런북에는 입력 인수가 없습니다.

UA 4.1.1
LspStaleInfo

이 런북은 오래된 논리적 포트를 가져옵니다.

이 런북에는 입력 인수가 없습니다.

UA
BgpNeighborState

이 런북(runbook)은 BGP 인접 항목이 중단될 수 있는 다양한 흐름을 진단합니다. 또한 이 런북(runbook)은 오프라인 디버깅을 위해 다음과 같은 지원 아티팩트를 수집합니다.

  • BGP 및 BFD 패킷 캡처.
  • Ping 및 traceroute 결과입니다.

이 런북에는 다음과 같은 입력 인수가 사용됩니다.

  • 피어 IP: 필수 인수이며 BGP 인접 항목 IP 주소를 가져옵니다.
  • 논리적 라우터 이름: 필수 인수이며 사용자가 구성한 논리적 라우터 이름을 사용합니다.
  • 패킷 캡처: 선택적 인수입니다. True로 설정하면 이 런북(runbook)이 BGP/BFD 패킷을 캡처합니다. 기본적으로 이 설정은 False로 설정됩니다.
Edge 4.1.1
PimMrouteState

이 런북은 다양한 이유로 인해 발생할 수 있는 멀티캐스트 트래픽 손실을 심사합니다.

멀티캐스트 트래픽 발신자의 소스 IP와 멀티캐스트 트래픽의 그룹 IP를 감안할 때 이 런북(runbook)은 문제의 근본 원인을 식별하고 오프라인 디버깅을 위한 지원 아티팩트를 수집하는 데 도움이 됩니다.

이 런북(runbook)은 소스 IP, 그룹 IP 및 트래픽 방향을 입력 인수로 사용합니다.

Edge 4.1.1
OspfNbrState

이 런북(runbook)은 다양한 논리적 흐름을 진단하여 ospf 인접 항목 상태 문제를 심사합니다.

이 런북(runbook)은 인접 항목 IP 주소를 입력 인수로 사용합니다.

Edge 4.1.1
IdpsDpStatus

이 런북(runbook)은 IDPS/IDS 모듈(컨텍스트 엔진) 및 IDPS 엔진의 상태를 모두 확인합니다. 또한 IDPS 모듈과 IDPS 엔진 모듈 모두에서 로드된 프로파일, 규칙, 서명 및 캡처된 이벤트를 비교합니다.

이 런북에는 입력 인수가 없습니다.

ESXi 4.1.1
NxgiPlatformUA

이 런북(runbook)은 분산 MPS, 끝점 보호, IDFW, IDS, Intelligence와 같은 다양한 기능을 제공하는 NXGI 플랫폼의 관리부 문제를 진단합니다. 이 런북은 전송 노드에서 실행되는 NxgiPlatform 런북과 함께 사용할 수 있습니다.

이 런북은 전송 노드 ID를 선택적 입력 인수로 사용합니다.

Ua 4.1.1
CorfuServer

이 런북(runbook)은 Corfu 서버 레이아웃 안정성, 인프라 ping 및 디스크 IO 상태 및 압축기 상태를 확인합니다.

로그 이벤트의 기본 조회 기간(일 또는 시간)을 재정의하기 위해 이 런북(runbook)은 조회 기간(일 및 시간)을 입력 인수로 사용합니다.

Ua 4.1.1
EdgeIDPS

이 런북(runbook)은 Edge에 있는 IDS/IPS 서명에 대한 통계를 확인하고 검색합니다.

이 런북은 서명 ID를 입력 인수로 사용합니다.

Edge 4.1.1
EdgeRouting

이 런북은 지정된 논리적 라우터 상태의 여러 측면을 검사하고 정상 상태가 아닌 Edge 프로세스 목록을 제공합니다. 이 런북은 일반적인 North/South 라우팅 문제에 대한 문제 해결 지침을 제공합니다.

이 런북(runbook)은 다양한 정보를 수집하고 라우팅 프로토콜, 터널 및 포트의 상태를 보고합니다. Edge의 라우팅에 사용되는 라우팅 스택 및 다양한 데몬에 대한 상태 점검을 수행합니다. 제공된 대상 IP의 경우 RIB, FIB 및 ARP 테이블을 확인합니다. 또한 소스 및 대상 IP를 사용하여 ping 및 traceroute를 실행합니다.

이 런북에는 다음과 같은 입력 인수가 사용됩니다.
  • 대상/피어 IP: 필수 인수입니다.
  • 소스 IP: 필수 인수입니다. 소스 IP는 ping 및 traceroute에 사용되며 대상 IP가 전달되어야 하는 인터페이스의 IP여야 합니다.
  • LR(논리적 라우터) 이름: 필수 인수입니다. 시스템에 구성된 논리적 라우터 이름입니다.
Edge 4.1.1

PimConfigCheck

이 런북(runbook)은 Edge가 routing_config_error가 발생했을 때 정확히 실패한 사항에 대한 자세한 내용을 제공합니다. 또한 문제를 심사하는 데에도 도움이 됩니다.

이 런북에는 입력 인수가 없습니다.

Edge 4.1.1
NCPPendingPod 이 런북은 보류 중 상태에서 중단된 포드를 디버그합니다.

이 런북은 네임스페이스와 보류 중인 포드의 이름을 입력 인수로 사용합니다.

ESXi 4.1.2

런타임 시 디버깅 단계

런타임에 디버깅하려면 다음 단계를 수행합니다.

1단계: 미리 정의된 런북(runbook) 목록 가져오기

다음 API를 실행하여 미리 정의된 런북(runbook) 목록을 가져옵니다.

GET https://<nsx-mgr>/policy/api/v1/infra/sha/pre-defined-runbooks

이 API는 다음 정보와 함께 미리 정의된 런북(runbook) 목록을 반환합니다.

  • 구성 세부 정보
  • 런북(runbook)이 지원되는 노드 유형
  • ID, 이름 및 경로와 같은 런북(runbook)의 일반 세부 정보
  • 런북(runbook)을 호출할 때 필요한 매개 변수 세부 정보

응답 예:

{
    "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
}
위의 응답에서 다음과 같은 미리 정의된 런북(runbook)이 반환됩니다.
  • AdfCollect
  • ControllerConn
  • OverlayTunnel
  • PnicPerf
  • PortBlock

    호출 시 런북(runbook)에 매개 변수가 필요한 경우 매개 변수 세부 정보가 parameters 키에 지정됩니다. 예를 들어 오버레이 터널 런북(runbook)에는 터널의 로컬 및 원격 VTEP IP인 sourcedestination의 두 가지 매개 변수가 필요합니다.

2단계: 런북(runbook) 호출

다음 API를 실행하여 런북(runbook)을 호출합니다.

POST https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>

요청 예: 오버레이 터널 런북(runbook) 호출.

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"
        }
    ]
}
target_node 호스트 노드, Edge 노드 또는 통합 장치 노드일 수 있습니다.

호스트 또는 Edge의 ID는 다음 API를 통해 가져올 수 있습니다.

https://{{MANAGER_IP}}/api/v1/transport-nodes

장치 ID 목록은 클러스터 API에서 가져올 수 있습니다. 유효한 ID는 관리자 역할이 있는 장치의 외부 ID입니다.

https://{{MANAGER_IP}}/api/v1/cluster/nodes
3단계: 호출된 런북(runbook)의 보고서 확인

다음 API를 실행하여 호출된 런북(runbook)의 보고서를 가져옵니다.

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 필드에 중단 이유를 정의하는 값이 포함됩니다. 런북(runbook) 호출이 성공하지 못하면 보고서는 오류 세부 정보를 제공하고 디버깅 관련 필드를 표시하지 않습니다.

4단계: 아티팩트 다운로드
  1. 다음 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로 설정된 경우 런북(runbook)은 토폴로지 정보, net-stats, NSX DP 통계 및 업링크 정보를 수집합니다. advanced 매개 변수가 true로 설정된 경우 런북(runbook)은 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"
        }
    }
  2. 다음 API를 실행하여 아티팩트를 다운로드합니다.

    GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>/artifact

런북(runbook)이 아티팩트를 생성한 경우 API는 번들 파일을 반환하고, 그렇지 않으면 오류 메시지를 반환합니다. 바이너리 응답을 tar.gz 파일에 저장합니다. 이 파일에는 런북(runbook) 호출 보고서(JSON)와 수행된 ADF 수집의 tar 파일이 포함되어 있습니다.

런북(runbook) 구성 변경

TN(전송 노드) 그룹이 먼저 생성되고 런북(runbook) 프로파일이 바인딩됩니다. 런북(runbook)의 구성을 변경하면 런북(runbook) 프로파일이 바인딩된 모든 노드에서 변경됩니다. 런북(runbook)을 사용하도록 설정할지 여부, 디버깅 시간 초과 및 스로틀 주기 메커니즘을 사용하여 런북(runbook)을 호출할 수 있는 빈도를 구성할 수 있습니다. 스로틀 주기 메커니즘은 특정 시간에 런북(runbook)을 실행할 수 있는 횟수를 지정합니다.

런북(runbook)에는 프로파일이 하나만 있을 수 있지만 노드가 속한 TN 그룹을 기준으로 하는 여러 개의 런북(runbook) 프로파일이 노드에 있을 수 있습니다. 이 경우 우선 순위가 가장 높은 프로파일이 노드에 적용됩니다.

런북(runbook) 구성을 변경하려면 다음 단계를 수행합니다.

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단계: 런북(runbook) 프로파일의 구성을 변경하고 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분 내에 런북(runbook)을 두 번 이상 호출할 수 없습니다.

ODS API에 대한 자세한 내용은 "NSX Intelligence 및 NSX Application Platform API 가이드" 를 참조하십시오.