Zum Inhalt springen

Debug-API

Aufgenommen am 28.07.2026 von einer CE dieses Deployments. sitecli/capture-manifest.json hält fest, welcher Knoten verwendet wurde, und scripts/capture-sitecli.sh --check überprüft die Befehlsoberfläche erneut gegen eine aktive CE.

Die vpm/debug-API führt Site-CLI-Befehle auf einem registrierten Knoten aus und gibt deren Ausgabe zurück. Alles Nachfolgende wurde gegen einen aktiven Knoten ermittelt; nichts davon ist offiziell veröffentlicht.

Fragen Sie den Knoten ab, was er unterstützt, indem Sie an exec-user POSTen und den Schlüssel command auslassen:

Terminal-Fenster
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 .

Die Antwort ist ein JSON-Objekt, dessen Schlüssel die Befehlsnamen sind:

{
"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)"]
}

Jeder Eintrag hat die Form [category, tier, exampleArgument?, scope?], und diese Felder sind keine Dokumentation – sie legen fest, wie der Befehl aufgerufen werden muss.

Drei Transportwege, ausgewählt durch den Katalogeintrag

Abschnitt betitelt „Drei Transportwege, ausgewählt durch den Katalogeintrag“
BedingungMethode und PfadBodyRückgabe
scope ist GLOBALGET .../vpm/debug/global/<cmd>keinerJSON
tier ist ExecUserPOST .../vpm/debug/<node>/exec-usercommand-ArrayText
tier ist ExecPOST .../vpm/debug/<node>/execcommand-ArrayText

ExecUser – die schreibgeschützte Ebene 31 Befehle

Abschnitt betitelt „ExecUser – die schreibgeschützte Ebene “

Der Regelfall. Übergeben Sie den Befehl und seine Argumente als Array, den Befehlsnamen zuerst:

Terminal-Fenster
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 ..." }

Argumente sind separate Array-Elemente, nicht eine einzelne Zeichenkette:

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

GLOBAL – standortweit und ein völlig anderer Transportweg 2 Befehle

Abschnitt betitelt „GLOBAL – standortweit und ein völlig anderer Transportweg “

health und diagnosis sind die einzigen beiden. Es handelt sich um GET-Anfragen an einen global-Pfad, sie nehmen keine Argumente an und geben strukturiertes JSON anstelle von Terminaltext zurück.

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

Exec – die privilegierte Ebene 1 Befehl in diesem Build

Abschnitt betitelt „Exec – die privilegierte Ebene “

Ein separater Endpunkt, und die Ebene wird erzwungen und nicht nur empfohlen: exec weist einen ExecUser-Befehl mit derselben Meldung command not supported ab. Jedes Mitglied verändert entweder den Knoten oder liest einen Zustandsmarker.

Im Build, den dieser Tenant ausführt, enthält die Ebene ausschließlich ip-link-set. Neuere Builds ergänzen systemctl-restart-NetworkManager, systemctl-restart-crio, systemctl-restart-kubelet, systemctl-start-crio-prune und drei marker-exists-*-Befehle.

Der Knotenname ist der Azure-VM-Name, und list-service ist eine günstige Möglichkeit, ihn zusammen mit den darauf laufenden Diensten zu bestätigen:

Terminal-Fenster
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"]

Einige Dienste melden einen leeren Knotennamen, daher ist eine leere Zeichenkette in dieser Liste ein Artefakt der Antwort und kein zweiter Knoten. list-service ist außerdem nicht im Katalog mit 34 Befehlen enthalten: es ist ein global-Endpunkt, den der Katalog nicht ausweist, weshalb er hier dokumentiert ist und nicht in der Befehlsreferenz.

Jede Befehlsseite bindet Ausgaben ein, die von scripts/capture-sitecli.sh aufgenommen wurden, welches alle drei oben genannten Regeln umsetzt.

  1. Richten Sie es auf einen Tenant. Es liest XCSH_API_URL und XCSH_API_TOKEN oder greift auf den aktiven xcsh-Kontext zurück.

  2. Aktualisieren Sie den Katalog und bestätigen Sie, dass sich der Knoten nicht unter der Dokumentation verändert hat:

    Terminal-Fenster
    bash scripts/capture-sitecli.sh --check

    Dies vergleicht ausschließlich den committeten Katalog und den Software-Build. Eine Build-Änderung wird getrennt von hinzugefügten oder entfernten Befehlen gemeldet.

  3. Nehmen Sie erneut auf, wenn Sie frische Belege möchten:

    Terminal-Fenster
    bash scripts/capture-sitecli.sh