Ir al contenido

API de depuración

Capturado el 2026-07-28 desde un CE de esta implementación. sitecli/capture-manifest.json registra qué nodo, y scripts/capture-sitecli.sh --check vuelve a verificar la superficie de comandos contra un CE en vivo.

La API vpm/debug ejecuta comandos de Site CLI en un nodo registrado y devuelve su salida. Todo lo que aparece a continuación se estableció contra un nodo en vivo; nada de ello está publicado en el origen.

Pregunte al nodo qué admite haciendo un POST a exec-user con la clave command omitida:

Ventana de terminal
curl -sS -X POST \
-H "Authorization: APIToken $XCSH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"namespace":"system","site":"<site>","node":"<node>"}' \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/<node>/exec-user" \
| jq -r .output | jq .

La respuesta es un objeto JSON indexado por nombre de comando:

{
"crictl-inspect": ["System Troubleshooting", "ExecUser", " container-id"],
"diagnosis": ["System Troubleshooting", "ExecUser", "no argument needed", "GLOBAL"],
"ip-link-set": ["Network Troubleshooting", "Exec", " (<device>||<group>) (up||down)"]
}

Cada entrada es [category, tier, exampleArgument?, scope?], y esos campos no son documentación: determinan cómo debe invocarse el comando.

Sección titulada «Tres transportes, elegidos por la entrada del catálogo»
CondiciónMétodo y rutaCuerpoDevuelve
scope es GLOBALGET .../vpm/debug/global/<cmd>ningunoJSON
tier es ExecUserPOST .../vpm/debug/<node>/exec-userarray commandtexto
tier es ExecPOST .../vpm/debug/<node>/execarray commandtexto

ExecUser — el nivel de solo lectura 31 comandos

Sección titulada «ExecUser — el nivel de solo lectura »

El caso habitual. Pase el comando y sus argumentos como un array, con el nombre del comando primero:

Ventana de terminal
curl -sS -X POST \
-H "Authorization: APIToken $XCSH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"namespace":"system","site":"<site>","node":"<node>","command":["crictl-ps"]}' \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/<node>/exec-user"
{ "return_code": 0, "output": "CONTAINER IMAGE CREATED STATE ..." }

Los argumentos son elementos separados del array, no una única cadena:

{ "command": ["journalctl", "-u", "vpm", "-n", "200"] }

GLOBAL — de ámbito global del sitio, y con un transporte completamente distinto 2 comandos

Sección titulada «GLOBAL — de ámbito global del sitio, y con un transporte completamente distinto »

health y diagnosis son los dos únicos. Son solicitudes GET a una ruta global, no toman argumentos y devuelven JSON estructurado en lugar de texto de terminal.

Ventana de terminal
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/health" | jq .

Exec — el nivel privilegiado 1 comando en esta compilación

Sección titulada «Exec — el nivel privilegiado »

Un endpoint separado, y el nivel se aplica de forma estricta en lugar de ser orientativo: exec rechaza un comando ExecUser con el mismo mensaje command not supported. Cada miembro o modifica el nodo o lee un marcador de estado.

En la compilación que ejecuta este tenant, el nivel contiene únicamente ip-link-set. Las compilaciones más recientes añaden systemctl-restart-NetworkManager, systemctl-restart-crio, systemctl-restart-kubelet, systemctl-start-crio-prune y tres comandos marker-exists-*.

El nombre del nodo es el nombre de la VM de Azure, y list-service es una forma económica de confirmarlo junto con los servicios que se ejecutan en él:

Ventana de terminal
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \
"$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/list-service" \
| jq -r '[.service[].node] | unique'
["", "f5-xc-ce-vm-01"]

Algunos servicios informan un nombre de nodo vacío, por lo que una cadena vacía en esa lista es un artefacto de la respuesta y no un segundo nodo. list-service tampoco está en el catálogo de 34 comandos: es un endpoint global que el catálogo no anuncia, razón por la cual se documenta aquí y no en la referencia de comandos.

Cada página de comando incrusta la salida capturada por scripts/capture-sitecli.sh, que implementa las tres reglas anteriores.

  1. Apúntelo a un tenant. Lee XCSH_API_URL y XCSH_API_TOKEN, o recurre al contexto activo de xcsh.

  2. Actualice el catálogo y confirme que el nodo no ha cambiado por debajo de la documentación:

    Ventana de terminal
    bash scripts/capture-sitecli.sh --check

    Esto compara únicamente el catálogo confirmado y la compilación de software. Informa de un cambio de compilación por separado de los comandos añadidos o eliminados.

  3. Vuelva a capturar cuando quiera evidencia reciente:

    Ventana de terminal
    bash scripts/capture-sitecli.sh