La función Sistema de diagnóstico en línea (ODS) automatiza la depuración de NSX en tiempo de ejecución. ODS se implementa a través de runbooks que vienen incorporados en NSX. Los runbooks contienen procedimientos de depuración y tienen una observabilidad total de los componentes de NSX. Un runbook genera un informe de depuración. También genera artefactos de tiempo de ejecución de un problema, como la captura de paquetes, el volcado de núcleo activo del proceso de usuario y los resultados de scripts y herramientas. Estos artefactos se pueden recopilar más adelante y utilizarse para el análisis y la depuración sin conexión. Tenga en cuenta que no puede modificar un runbook predefinido.
Puede utilizar las API para realizar las siguientes operaciones de runbook:
- Invocar un runbook para iniciar la depuración del tiempo de ejecución
- Comprobar el informe de depuración
- Descargar artefactos generados por el runbook invocado
- Administrar el ciclo de vida de una guía de ejecución
Runbooks predefinidos
A partir de NSX 4.1.1, ODS también es compatible con Unified Appliance (UA). En la siguiente tabla, se especifican los runbooks y también los nodos en los que puede ejecutarlos.
Runbook | Descripción | Nodo | Versión | |
---|---|---|---|---|
PnicPerf | Este runbook puede identificar problemas de rendimiento de transmisión y recepción de pNIC. Este runbook adopta el identificador del puerto lógico que se va a diagnosticar como un argumento de entrada. |
ESXi | 4.1 | |
OverlayTunnel | Este runbook puede identificar errores de túnel de superposición, como el error de configuración de puerta de enlace cuando falta el túnel o el túnel está inactivo. Este runbook adopta la dirección IP de VTEP de origen y la dirección IP de VTEP de destino como argumentos de entrada. |
ESXi | 4.1 | |
PortBlock | Este runbook puede identificar las causas del bloqueo de un puerto, como cuando un DVPort se bloquea debido a una configuración incorrecta de LSP/LS. | ESXi | 4.1 | |
AdfCollect | Este runbook de recopilación recopila datos de rendimiento de la ruta de datos de ESXi a través del recopilador de ADF. Este runbook toma los siguientes argumentos de entrada:
|
ESXi | 4.1 | |
ControllerConn | Este runbook puede identificar los problemas de conectividad del controlador provocados por un error del controlador, un error del proxy, una interrupción de red subyacente o un error de resolución de FQDN. Este runbook adopta la dirección IP del host ESXi y la dirección IP del controlador como argumentos de entrada. |
ESXi | 4.1 | |
NxgiPlatform | Este runbook diagnostica problemas en la ruta de datos de la plataforma NXGI, que controla varias funciones como MPS distribuido, Protección de endpoints, IDFW, IDS e Intelligence. Este runbook toma la funcionalidad como argumento de entrada. Esta es la funcionalidad específica dependiente de NXGI (una de MPS, IDFW, IDS, EPP e Intelligence, con EPP por defecto) que se debe comprobar o depurar. |
ESXi | 4.1.1 | |
VifInfo | Este runbook obtiene información detallada sobre una interfaz virtual, que se puede utilizar como entrada en otros runbooks. Este runbook toma VIF como un argumento de entrada. |
ESXi | 4.1.1 | |
EdgeHealth |
Este runbook realiza las siguientes funciones:
Este runbook no tiene ningún argumento de entrada. |
Edge | 4.1.1 | |
MacAddressInfo |
Este runbook diagnostica problemas relacionados con una dirección MAC específica, y comprueba y corrige problemas de rendimiento en un conmutador de host. Realiza las siguientes funciones:
Este runbook toma el nombre del conmutador de host y la dirección MAC como argumentos de entrada. |
ESXi | 4.1.1 | |
EdgeDpBfd | Este runbook hace una clasificación de los problemas de BFD de NSX Edge. Este runbook toma la IP de origen y la IP de destino de la sesión de BFD como argumentos de entrada. También toma una captura como argumento opcional para garantizar que solo se filtren y capturen los paquetes de BFD específicos de la sesión. |
Edge | 4.1.1 | |
DistributedMps | Este runbook verifica el estado de la canalización de Malware Prevention Service (MPS) y diagnostica los problemas detectados con MPS, como cuando la protección no funciona en una máquina virtual en particular o determinados archivos no se están escaneado. El argumento de entrada de este runbook es el UUID de la máquina virtual que se va a diagnosticar como protección. |
ESXi | 4.1.1 | |
DuplicateVtepDetectorProvider | Este runbook detecta cualquier dirección IP o etiqueta duplicada en VTEP. Este runbook no tiene ningún argumento de entrada. |
UA | 4.1.1 | |
LspStaleInfo | Este runbook recupera los puertos lógicos obsoletos. Este runbook no tiene ningún argumento de entrada. |
UA | ||
BgpNeighborState | Este runbook diagnostica varios flujos que pueden provocar que el vecino de BGP esté inactivo. El runbook también recopila los siguientes artefactos de soporte para la depuración sin conexión.
Este runbook toma los siguientes argumentos de entrada:
|
Edge | 4.1.1 | |
PimMrouteState | Este runbook detecta la pérdida de tráfico de multidifusión que puede ocurrir por varios motivos. Con una IP de origen del remitente de tráfico de multidifusión y una IP de grupo del tráfico de multidifusión, este runbook permitirá identificar la causa principal del problema y recopilará artefactos de soporte para la depuración sin conexión. Este runbook toma la IP de origen, la IP de grupo y la dirección del tráfico como argumentos de entrada. |
Edge | 4.1.1 | |
OspfNbrState | Este runbook detecta los problemas de estado de vecino de OSPF mediante el diagnóstico de varios flujos lógicos. Este runbook toma la dirección IP del vecino como argumento de entrada. |
Edge | 4.1.1 | |
IdpsDpStatus | Este runbook comprueba el estado del módulo de IDPS/IDS (en el motor de contexto) y el motor de IDPS. También compara los perfiles cargados, las reglas, las firmas y los eventos capturados tanto en el módulo IDPS como en el módulo del motor de IDPS. Este runbook no tiene ningún argumento de entrada. |
ESXi | 4.1.1 | |
NxgiPlatformUA | En este runbook se diagnosticaron problemas en el plano de administración de la plataforma NXGI, que controla varias funciones como MPS distribuido, Protección de endpoints, IDFW, IDS e Intelligence. Este runbook se puede utilizar junto con el runbook de NxgiPlatform que se ejecuta en los nodos de transporte. Este runbook toma el identificador de nodo de transporte como argumento de entrada opcional. |
UA | 4.1.1 | |
CorfuServer | Este runbook comprueba la estabilidad del diseño del servidor de Corfu, el ping de infraestructura y la condición de E/S del disco, así como el estado del compactor. Para anular los días u horas de búsqueda predeterminados de los eventos de registro, este runbook toma los días y las horas de búsqueda como argumentos de entrada. |
UA | 4.1.1 | |
EdgeIDPS | Este runbook comprueba y recupera las estadísticas de la firma de IDS/IPS presente en Edge. Este runbook toma el identificador de firma como argumento de entrada. |
Edge | 4.1.1 | |
EdgeRouting | Este runbook comprueba varios aspectos del estado de un enrutador lógico determinado y proporciona una lista de procesos de Edge que no están en estado correcto. El runbook proporciona indicaciones para solucionar los problemas comunes de enrutamiento norte/sur. El runbook recopila diversa información e informa sobre el estado de los protocolos de enrutamiento, los túneles y los puertos. Realiza una comprobación de estado para la pila de enrutamiento y varios daemons utilizados por el enrutamiento en la instancia de Edge. Para la IP de destino proporcionada, comprueba las tablas RIB, FIB y ARP. También ejecuta un ping y traceroute mediante la dirección IP de origen y destino.
Este runbook toma los siguientes argumentos de entrada:
|
Edge | 4.1.1 | |
PimConfigCheck |
Este runbook proporciona más detalles sobre qué falló exactamente cuando Edge muestra el error routing_config_error. También ayuda a evaluar el problema. Este runbook no tiene ningún argumento de entrada. |
Edge | 4.1.1 | |
NCPPendingPod | Este runbook depura el pod bloqueado en estado pendiente. Este runbook toma como argumentos de entrada el espacio de nombres y el nombre del pod pendiente. |
ESXi | 4.1.2 | |
PortStatusInfo | Este runbook identifica problemas en un puerto conectado a vSwitch. Este runbook toma el identificador de VIF como un argumento de entrada para recuperar los detalles del puerto. |
ESXi | 4.2.1 |
Pasos para depurar en tiempo de ejecución
Para depurar el tiempo de ejecución, siga estos pasos:
- Paso 1: Recupere una lista de runbook predefinido.
-
Ejecute la siguiente API para recuperar una lista de runbooks predefinidos.
GET https://<nsx-mgr>/policy/api/v1/infra/sha/pre-defined-runbooks
Esta API devuelve una lista de runbooks predefinidos junto con la siguiente información:
- Detalles de configuración.
- Tipo de nodo en el que se admite el runbook.
- Detalles generales del runbook, como el identificador, el nombre y la ruta.
- Detalles del parámetro, si alguno es necesario en el momento de invocar el runbook.
Ejemplo de respuesta:
{ "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 }
En la respuesta anterior, se devuelven los siguientes runbooks predefinidos.- AdfCollect
- ControllerConn
- OverlayTunnel
- PnicPerf
- PortBlock
Si un runbook requiere un parámetro en el momento de la invocación, los detalles del parámetro se especifican en la clave parameters. Por ejemplo, el runbook del túnel superpuesto requiere dos parámetros source y destination, que son direcciones IP de VTEP locales y remotas del túnel que se van a diagnosticar.
- Paso 2: Obtenga los detalles de los parámetros del runbook.
-
Ejecute la siguiente API para recuperar los detalles de los parámetros de un runbook que desee invocar.
- Paso 3: Invoque el runbook.
-
Ejecute la siguiente API para invocar un runbook.
POST https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>
Solicitud de ejemplo: invocar el runbook de túnel superpuesto.
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" } ] }
- Paso 4: Compruebe el informe del runbook invocado.
-
Ejecute la siguiente API para obtener el informe del runbook invocado.
GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>/report
Ejemplo de solicitud:
GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/OverlayTunnel/report
Ejemplo de respuesta:
{ "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" } }
La respuesta devuelve cierta información de metadatos, por ejemplo la marca de tiempo y los detalles del sistema, como el nombre de host y el sistema operativo. El informe también devuelve el resultado de la depuración, sugerencia de corrección si hubiera alguna, junto con los pasos ejecutados para la depuración y el resultado de la acción de cada paso. Si la depuración se interrumpe por algún motivo, el campo operation_state tendrá un valor para definir el motivo de la interrupción. En caso de que la invocación del runbook no se realice correctamente, el informe proporcionará detalles del error y no mostrará los campos relacionados con la depuración.
- Paso 5: Descargue los artefactos.
-
- Ejecute la siguiente API para recopilar artefactos.
POST https://{{mgr-ip}}/policy/api/v1/infra/sha/runbook-invocations/{{invocation-name}}
Ejemplo de solicitud: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}}" } ] }
Si el parámetro advanced se establece en false en el momento de la invocación, el runbook recopilará información de topología, estadísticas de red, estadísticas de DP NSX e información de vínculo superior. Si el parámetro advanced se establece en true, el runbook también ejecutará herramientas de rendimiento avanzadas, como vmkstats (disponibles solo en la máquina física).
El parámetro cycle define el número de veces que se ejecuta el recopilador de ADF en una invocación.
El parámetro interval define el intervalo de espera entre ejecuciones consecutivas del recopilador de ADF. Solo surte efecto cuando el parámetro cycle se establece en mayor que 1.
Ejemplo de respuesta:
{ "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" } }
- Ejecute la siguiente API para descargar los artefactos.
GET https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-invocations/<invoke-name>/artifact
Si el runbook generó los artefactos, la API devolverá un archivo incluido; de lo contrario, devolverá un mensaje de error. Guarde la respuesta binaria en un archivo tar.gz. Este archivo contiene un informe de invocación de runbook (en JSON), así como un archivo tar para la recopilación de ADF realizada.
- Ejecute la siguiente API para recopilar artefactos.
Cambiar una configuración de runbook
Primero se crea un grupo de nodos de transporte (TN) y, a continuación, se enlaza un perfil de runbook. Si cambia la configuración de un runbook, esta se cambiará en todos los nodos a los que está enlazado el perfil de runbook. Puede configurar si un runbook está habilitado o no, el tiempo de espera de depuración y la frecuencia con la que se puede invocar el runbook mediante el mecanismo de ciclo de limitación. El mecanismo de ciclo de limitación especifica el número de veces que se puede ejecutar un runbook en un tiempo específico.
Tenga en cuenta que un runbook solo puede tener un perfil, pero un nodo puede tener varios perfiles de runbook basados en los grupos de TN a los que pertenece. En este caso, el perfil con la prioridad más alta se aplica al nodo.
Para cambiar la configuración de un runbook, siga estos pasos.
- Paso 1: Cree un grupo de TN de ESXi.
-
Ejecute la siguiente API para crear un grupo de TN.
PATCH https://<nsx-mgr>/policy/api/v1/infra/domains/default/groups/<group-name>
Ejemplo de solicitud:
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" }
- Paso 2: Cambie la configuración del perfil de runbook y enlace el grupo de TN con el perfil.
-
Ejecute la siguiente API para cambiar la configuración:
PATCH https://<nsx-mgr>/policy/api/v1/infra/sha/runbook-profiles/<profile-name>
Ejemplo de solicitud:
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 } }
En este ejemplo, throttle_cycle es 6 minutos y threshold_number es 2, lo que significa que en un período de 6 minutos, el runbook no se podrá invocar más de dos veces.
Para obtener información completa sobre las API de ODS, consulte la Guía de API de NSX Intelligence y NSX Application Platform.