- หน้าแรก
- เครือข่ายมัลติคลาวด์
- Customer Edge diagnostics
- Reaching a Customer Edge
- Debug API
Debug API
เก็บข้อมูลเมื่อ 2026-07-28 จาก CE หนึ่งเครื่องของการติดตั้งนี้ โดย sitecli/capture-manifest.json
บันทึกว่าเป็นโหนดใด และ scripts/capture-sitecli.sh --check จะตรวจสอบพื้นผิวคำสั่ง
เทียบกับ CE ที่ทำงานอยู่จริงอีกครั้ง
API vpm/debug เรียกใช้คำสั่ง Site CLI บนโหนดที่ลงทะเบียนไว้และคืนค่าผลลัพธ์
ของคำสั่งนั้น ทุกสิ่งที่อยู่ด้านล่างนี้ได้รับการยืนยันกับโหนดที่ทำงานอยู่จริง และไม่มีส่วนใด
ที่เผยแพร่ไว้ในเอกสารต้นทาง
แคตตาล็อกคำสั่งอธิบายตัวเองได้
หัวข้อที่มีชื่อว่า “แคตตาล็อกคำสั่งอธิบายตัวเองได้”สอบถามโหนดว่ารองรับคำสั่งอะไรบ้าง โดยส่ง POST ไปที่ exec-user และ ละ คีย์ command
ไว้:
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?] และฟิลด์เหล่านั้น
ไม่ใช่เพียงเอกสารประกอบ — มันกำหนดว่าคำสั่งนั้นต้องถูกเรียกอย่างไร
Transport สามแบบ เลือกตามรายการในแคตตาล็อก
หัวข้อที่มีชื่อว่า “Transport สามแบบ เลือกตามรายการในแคตตาล็อก”| เงื่อนไข | เมธอดและพาธ | Body | คืนค่า |
|---|---|---|---|
scope เป็น GLOBAL | GET .../vpm/debug/global/<cmd> | ไม่มี | JSON |
tier เป็น ExecUser | POST .../vpm/debug/<node>/exec-user | อาร์เรย์ command | ข้อความ |
tier เป็น Exec | POST .../vpm/debug/<node>/exec | อาร์เรย์ command | ข้อความ |
ExecUser — ระดับอ่านเท่านั้น 31 commands
หัวข้อที่มีชื่อว่า “ExecUser — ระดับอ่านเท่านั้น ”กรณีที่พบทั่วไป ส่งคำสั่งและอาร์กิวเมนต์ของคำสั่งเป็นอาร์เรย์ โดยให้ชื่อคำสั่ง อยู่ลำดับแรก:
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 — ครอบคลุมทั้งไซต์ และใช้ transport ที่แตกต่างไปโดยสิ้นเชิง 2 commands
หัวข้อที่มีชื่อว่า “GLOBAL — ครอบคลุมทั้งไซต์ และใช้ transport ที่แตกต่างไปโดยสิ้นเชิง ”มีเพียง health และ diagnosis สองคำสั่งเท่านั้น ทั้งคู่เป็นคำขอ GET ไปยังพาธ global
ไม่รับอาร์กิวเมนต์ และคืนค่าเป็น JSON ที่มีโครงสร้างแทนที่จะเป็นข้อความแบบเทอร์มินัล
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \ "$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/health" | jq .Exec — ระดับที่มีสิทธิ์พิเศษ 1 command on this build
หัวข้อที่มีชื่อว่า “Exec — ระดับที่มีสิทธิ์พิเศษ ”เป็น endpoint แยกต่างหาก และระดับนี้ถูกบังคับใช้จริงไม่ใช่เพียงคำแนะนำ: exec จะปฏิเสธ
คำสั่งระดับ ExecUser ด้วยข้อความ command not supported เดียวกัน สมาชิกทุกตัว
ในระดับนี้ล้วนเปลี่ยนแปลงสถานะของโหนดหรืออ่านค่าตัวบ่งชี้สถานะ
บนบิลด์ที่เทนแนนต์นี้ใช้งาน ระดับนี้มีเพียง ip-link-set เท่านั้น บิลด์ที่ใหม่กว่า
เพิ่ม systemctl-restart-NetworkManager, systemctl-restart-crio,
systemctl-restart-kubelet, systemctl-start-crio-prune และคำสั่ง
marker-exists-* อีกสามคำสั่ง
การค้นหาชื่อไซต์และชื่อโหนด
หัวข้อที่มีชื่อว่า “การค้นหาชื่อไซต์และชื่อโหนด”ชื่อโหนดคือชื่อ Azure VM และ list-service เป็นวิธีที่ประหยัดในการยืนยันชื่อนั้น
พร้อมกับบริการที่กำลังทำงานอยู่บนโหนด:
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 คำสั่ง:
มันเป็น endpoint แบบ global ที่แคตตาล็อกไม่ประกาศไว้ ซึ่งเป็นเหตุผลที่มันถูกบันทึกไว้ที่นี่
ไม่ใช่ในเอกสารอ้างอิงคำสั่ง
การทำซ้ำการเก็บข้อมูลของ repository นี้
หัวข้อที่มีชื่อว่า “การทำซ้ำการเก็บข้อมูลของ repository นี้”ทุกหน้าคำสั่งฝังผลลัพธ์ที่เก็บได้จาก scripts/capture-sitecli.sh ซึ่ง
นำกฎทั้งสามข้อด้านบนไปใช้งาน
-
ชี้ให้สคริปต์ทำงานกับเทนแนนต์ สคริปต์จะอ่าน
XCSH_API_URLและXCSH_API_TOKENหรือย้อนไปใช้คอนเท็กซ์xcshที่เปิดใช้งานอยู่ -
รีเฟรชแคตตาล็อกและยืนยันว่าโหนดไม่ได้เปลี่ยนแปลงไปจากที่เอกสารระบุไว้:
Terminal window bash scripts/capture-sitecli.sh --checkคำสั่งนี้เปรียบเทียบเฉพาะแคตตาล็อกที่คอมมิตไว้และบิลด์ซอฟต์แวร์เท่านั้น และจะ รายงานการเปลี่ยนแปลงของบิลด์แยกจากคำสั่งที่ถูกเพิ่มหรือถูกลบ
-
เก็บข้อมูลใหม่เมื่อคุณต้องการหลักฐานที่สดใหม่:
Terminal window bash scripts/capture-sitecli.sh