مراقبة حركة مرور خوادم MCP في إدارة Azure API

في هذا المقال، ستتعلم ما الذي يصدره إدارة Azure API لحركة المرور إلى خوادم MCP، وكيفية تفعيل تسجيل الحمولة لأدوات الوسائط والنتائج، وكيفية الاستعلام عن البيانات في Azure Monitor.  

المتطلبات المسبقه

القياس الافتراضي لخوادم MCP

لكل طلب MCP، تكتب إدارة API صف طلبات Application Insights بأبعاد محددة ل MCP وتحدد حقل المدة القياسي. يمكنك رسم جدول زمن الاستجابة لكل أداة دون تغيير أي تكوين. للتفاصيل، راجع قسم مرجع القياس عن بعد MCP ، لاحقا في هذا المقال.  

ملحوظة

تتبع بيانات MCP الدلالية الخاصة ب OpenTelemetry للذكاء الاصطناعي التوليدي، والتي تحدد أسماء سمات التليمترية القياسية (على سبيل المثال، gen_ai.*) بحيث تكون البيانات متسقة عبر الأدوات.

تمكين تسجيل الحمولة للوسائط والنتائج

بشكل افتراضي، لا تلتقط إدارة API الوسائط ونتائج استدعاءات الأدوات. لتمكين الالتقاط لخادم MCP:

  1. في مدخل Microsoft Azure، انتقل إلى مثيل APIM. 

  2. اختر خوادم MCP الخاصة بواجهات البرمجة (APIs>)، ثم اختر خادم MCP الذي تريد تسجيله. 

  3. اختر الإعدادات>وسجلات التشخيص

  4. تمكين تسجيل حمولة الواجهة الأمامية والخلفية. اختر حفظ

إنذار

يمكن أن تشمل حجج الأدوات والنتائج المحفزات، بيانات العملاء، أو الأسرار. فعل تسجيل الحمولة فقط لخوادم MCP والبيئات التي تحتاجها. طبق قوائم المسح أو المطالبات قبل النشر الواسع. 

استعلام حركة مرور MCP باستخدام KQL

فيما يلي نماذج استفسارات Kusto يمكنك تشغيلها في Azure Monitor لتحليل حركة مرور MCP. في هذه الأمثلة، استبدل sales-mcp باسم خادم MCP الخاص بك حيثما كان ذلك مناسبا.

قم بإدراج آخر 50 استدعاء أداة على خادم MCP معين

requests
| where customDimensions["api.type"] == "Mcp"
  and customDimensions["service.name"] == "sales-mcp"
  and customDimensions["gen_ai.operation.name"] == "tools/call"
| project timestamp,
          tool       = customDimensions["gen_ai.tool.name"],
          session    = customDimensions["gen_ai.conversation.id"],
          client     = strcat(customDimensions["user_agent.name"], "/",
                              customDimensions["user_agent.version"]),
          durationMs = duration,
          success
| order by timestamp desc
| take 50

أفضل عملاء MCP حسب حجم استدعاء الأدوات

requests
| where customDimensions["api.type"] == "Mcp"
  and customDimensions["gen_ai.operation.name"] == "tools/call"
| summarize calls = count()
    by client = strcat(customDimensions["user_agent.name"], "/",
                       customDimensions["user_agent.version"])
| top 10 by calls desc

زمن الاستجابة P50 وP95 لكل أداة خلال آخر 24 ساعة

requests
| where customDimensions["api.type"] == "Mcp"
  and customDimensions["gen_ai.operation.name"] == "tools/call"
  and timestamp > ago(24h)
| summarize p50   = percentile(duration, 50),
            p95   = percentile(duration, 95),
            calls = count()
    by tool = tostring(customDimensions["gen_ai.tool.name"])
| order by p95 desc

معدل الخطأ لكل أداة عبر الزمن

requests
| where customDimensions["api.type"] == "Mcp"
  and customDimensions["gen_ai.operation.name"] == "tools/call"
| summarize total    = count(),
            failures = countif(success == false)
    by bin(timestamp, 5m),
       tool = tostring(customDimensions["gen_ai.tool.name"])
| extend errorRate = todouble(failures) / total
| render timechart

فحص الحجج المرسلة إلى أداة معينة

في هذا السيناريو، تأكد من تفعيل تسجيل الحمولة على خادم MCP.

requests
| where customDimensions["api.type"] == "Mcp"
  and customDimensions["service.name"] == "sales-mcp"
  and customDimensions["gen_ai.tool.name"] == "create_quote"
  and timestamp > ago(1h)
| project timestamp,
          session = customDimensions["gen_ai.conversation.id"],
          args    = customDimensions["gen_ai.tool.call.arguments"],
          result  = customDimensions["gen_ai.tool.call.result"]

أضف أبعاد مخصصة باستخدام سياسة التتبع

لالتقاط البيانات غير الموجودة في المخطط المدمج - مثل رأس مخصص x-agent-id ، أو مطالبة JWT، أو معرف ارتباط - استخدم سياسة التتبع في نطاق خادم MCP. 

التحذير

لا تدخل context.Response.Body من السياسات المرتبطة بنطاق MCP. يتم بث ردود MCP، وقراءة الجسد تكسر التيار. 

مرجع القياس عن بعد MCP

تظهر الأبعاد التالية في كل طلب MCP:

الملكية Description
gen_ai.operation.name طريقة JSON-RPC (أدوات/قائمة أو أدوات/استدعاء).
gen_ai.conversation.id معرف جلسة MCP.
network.protocol.name اسم البروتوكول (MCP).
network.protocol.version نسخة البروتوكول.
auth.type طريقة المصادقة الداخلة.
user_agent.name اسم عميل MCP (على سبيل المثال، vscode أو claude-desktop).
user_agent.version نسخة العميل MCP.
service.name اسم خادم MCP.
service.version نسخة خادم MCP.
api.type مميز نوع API (Mcp).
error.message سلسلة خطأ، عند الفشل.
error.type فئة الخطأ، عند الفشل.

حقول إضافية على الأدوات/القائمة

القياس Description
ToolCount عدد الأدوات التي أعيدت في الرد.

حقول إضافية على الأدوات/الاستدعاء

الملكية Description
gen_ai.tool.name أداة استدعاها العميل.
gen_ai.tool.type نوع الأداة.
gen_ai.tool.call.arguments الحجج JSON. يظهر فقط عند تفعيل تسجيل الحمولة.
gen_ai.tool.call.result النتيجة: JSON. يظهر فقط عند تفعيل تسجيل الحمولة.