इसे छोड़कर कंटेंट पर जाएं

डिबग API

इस डिप्लॉयमेंट के एक CE से 2026-07-28 को कैप्चर किया गया। sitecli/capture-manifest.json यह दर्ज करता है कि कौन-सा नोड था, और scripts/capture-sitecli.sh --check कमांड सरफ़ेस को एक लाइव CE के विरुद्ध पुनः सत्यापित करता है।

vpm/debug API किसी रजिस्टर्ड नोड पर Site CLI कमांड चलाता है और उनका आउटपुट लौटाता है। नीचे दी गई हर बात एक लाइव नोड के विरुद्ध स्थापित की गई थी; इसमें से कुछ भी अपस्ट्रीम प्रकाशित नहीं है।

कमांड कैटलॉग स्वयं-वर्णनात्मक है

Section titled “कमांड कैटलॉग स्वयं-वर्णनात्मक है”

नोड से पूछें कि वह क्या समर्थन करता है — exec-user पर POST करके, जिसमें command कुंजी छोड़ दी गई हो:

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

प्रतिक्रिया एक JSON ऑब्जेक्ट है जिसकी कुंजियाँ कमांड नाम हैं:

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

प्रत्येक प्रविष्टि [category, tier, exampleArgument?, scope?] है, और ये फ़ील्ड दस्तावेज़ीकरण नहीं हैं — ये तय करते हैं कि कमांड को कैसे कॉल किया जाना चाहिए।

तीन ट्रांसपोर्ट, कैटलॉग प्रविष्टि द्वारा चुने गए

Section titled “तीन ट्रांसपोर्ट, कैटलॉग प्रविष्टि द्वारा चुने गए”
शर्तविधि और पथबॉडीलौटाता है
scope का मान GLOBAL हैGET .../vpm/debug/global/<cmd>कोई नहींJSON
tier का मान ExecUser हैPOST .../vpm/debug/<node>/exec-usercommand सरणीटेक्स्ट
tier का मान Exec हैPOST .../vpm/debug/<node>/execcommand सरणीटेक्स्ट

ExecUser — केवल-पठन tier 31 commands

Section titled “ExecUser — केवल-पठन tier ”

सामान्य स्थिति। कमांड और उसके तर्कों को एक सरणी के रूप में पास करें, पहले कमांड नाम:

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

तर्क अलग-अलग सरणी तत्व होते हैं, एक अकेली स्ट्रिंग नहीं:

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

GLOBAL — साइट-व्यापी, और पूरी तरह भिन्न ट्रांसपोर्ट 2 commands

Section titled “GLOBAL — साइट-व्यापी, और पूरी तरह भिन्न ट्रांसपोर्ट ”

health और diagnosis ही केवल दो हैं। ये global पथ पर GET अनुरोध हैं, कोई तर्क नहीं लेते, और टर्मिनल टेक्स्ट के बजाय संरचित JSON लौटाते हैं।

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

Exec — विशेषाधिकार-प्राप्त tier 1 command on this build

Section titled “Exec — विशेषाधिकार-प्राप्त tier ”

एक अलग एंडपॉइंट, और tier सलाहकारी नहीं बल्कि लागू किया जाता है: exec एक ExecUser कमांड को उसी command not supported संदेश के साथ अस्वीकार करता है। इसका हर सदस्य या तो नोड को बदलता है या किसी स्टेट मार्कर को पढ़ता है।

इस टेनेंट पर चल रहे बिल्ड में, इस tier में केवल ip-link-set है। नए बिल्ड systemctl-restart-NetworkManager, systemctl-restart-crio, systemctl-restart-kubelet, systemctl-start-crio-prune और तीन marker-exists-* कमांड जोड़ते हैं।

साइट और नोड नाम खोजना

Section titled “साइट और नोड नाम खोजना”

नोड नाम Azure VM नाम होता है, और list-service इसकी पुष्टि करने का एक सस्ता तरीका है, साथ ही उस पर चल रही सेवाओं के साथ:

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

कुछ सेवाएँ खाली नोड नाम रिपोर्ट करती हैं, इसलिए उस सूची में एक खाली स्ट्रिंग दूसरे नोड के बजाय प्रतिक्रिया की एक कलाकृति है। list-service 34-कमांड कैटलॉग में भी नहीं है: यह एक global एंडपॉइंट है जिसका कैटलॉग प्रचार नहीं करता, और इसीलिए इसे यहाँ दस्तावेज़ित किया गया है, कमांड संदर्भ में नहीं।

इस रिपॉज़िटरी के कैप्चर पुनः उत्पन्न करना

Section titled “इस रिपॉज़िटरी के कैप्चर पुनः उत्पन्न करना”

प्रत्येक कमांड पृष्ठ scripts/capture-sitecli.sh द्वारा कैप्चर किया गया आउटपुट एम्बेड करता है, जो ऊपर के तीनों नियमों को लागू करता है।

  1. इसे किसी टेनेंट पर लक्षित करें। यह XCSH_API_URL और XCSH_API_TOKEN पढ़ता है, या सक्रिय xcsh संदर्भ पर वापस लौट जाता है।

  2. कैटलॉग रीफ़्रेश करें और पुष्टि करें कि दस्तावेज़ीकरण के नीचे नोड बदला नहीं है:

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

    यह केवल कमिट किए गए कैटलॉग और सॉफ़्टवेयर बिल्ड की तुलना करता है। यह बिल्ड परिवर्तन को जोड़े या हटाए गए कमांड से अलग रिपोर्ट करता है।

  3. जब आप ताज़ा साक्ष्य चाहें, तो पुनः कैप्चर करें:

    Terminal window
    bash scripts/capture-sitecli.sh