تخطَّ إلى المحتوى

واجهة برمجة تطبيقات التصحيح Debug API

تم الالتقاط في 2026-07-28 من إحدى عقد CE في هذا النشر. يسجّل الملف sitecli/capture-manifest.json أي عقدة تم استخدامها، ويقوم scripts/capture-sitecli.sh --check بإعادة التحقق من سطح الأوامر مقابل عقدة CE حيّة.

تقوم واجهة vpm/debug بتشغيل أوامر Site CLI على عقدة مُسجّلة وإرجاع مخرجاتها. كل ما يلي تم إثباته مقابل عقدة حيّة؛ ولا شيء منه منشور من المصدر الرسمي.

كتالوج الأوامر يصف نفسه

Section titled “كتالوج الأوامر يصف نفسه”

اسأل العقدة عمّا تدعمه عن طريق إرسال طلب POST إلى exec-user مع حذف المفتاح 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 يساوي GLOBALGET .../vpm/debug/global/<cmd>لا شيءJSON
tier يساوي ExecUserPOST .../vpm/debug/<node>/exec-userمصفوفة commandنص
tier يساوي ExecPOST .../vpm/debug/<node>/execمصفوفة commandنص

ExecUser — الطبقة للقراءة فقط 31 أمرًا

Section titled “ExecUser — الطبقة للقراءة فقط ”

الحالة الشائعة. مرِّر الأمر ووسائطه كمصفوفة، مع اسم الأمر أولًا:

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 — على نطاق الموقع، ووسيلة نقل مختلفة تمامًا أمران

Section titled “GLOBAL — على نطاق الموقع، ووسيلة نقل مختلفة تمامًا ”

health وdiagnosis هما الأمران الوحيدان. وهما طلبا GET إلى مسار global، لا يأخذان أي وسائط، ويُرجعان 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 — الطبقة المُتميّزة أمر واحد في هذه النسخة

Section titled “Exec — الطبقة المُتميّزة ”

نقطة نهاية منفصلة، والطبقة مُفرَضة وليست إرشادية: فـ exec يرفض أمرًا من ExecUser بنفس رسالة command not supported. وكل عضو فيها إمّا يُغيّر العقدة أو يقرأ علامة حالة.

في النسخة التي يشغّلها هذا المستأجر، تحتوي الطبقة على ip-link-set فقط. أما النسخ الأحدث فتضيف systemctl-restart-NetworkManager وsystemctl-restart-crio وsystemctl-restart-kubelet وsystemctl-start-crio-prune وثلاثة أوامر marker-exists-*.

إيجاد أسماء الموقع والعقدة

Section titled “إيجاد أسماء الموقع والعقدة”

اسم العقدة هو اسم جهاز Azure الافتراضي، و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