Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln får du lära dig vilka telemetri Azure API Management genererar för trafik till MCP-servrar, hur du aktiverar nyttolastloggning för verktygsargument och resultat samt hur du frågar efter data i Azure Monitor.
Prerequisites
En API Management-instans med minst en MCP-server. Se Exponera ett REST-API som en MCP-server eller Exponera en befintlig MCP-server.
En Application Insights-resurs som är länkad till din API Management-instans. Mer information finns i Konfigurera Application Insights för Azure API Management.
Standardtelemetri för MCP-servrar
För varje MCP-begäran skapar API Management en rad i Application Insights-tabellen för begäranden med MCP-specifika dimensioner och anger standardfältet för varaktighet. Du kan visa latens per verktyg i ett diagram utan att ändra några inställningar. Mer information finns i referensavsnittet mcp-telemetri senare i den här artikeln.
Note
MCP-telemetri följer OpenTelemetry-semantiska konventioner för generativ AI, som definierar standardattributnamn för telemetri (till exempel gen_ai.*) så att data är konsekventa mellan olika verktyg.
Aktivera loggning av nyttolast för argument och resultat
API Management samlar som standard inte in argumenten och resultatet av verktygsanrop. Så här aktiverar du avbildning för en MCP-server:
I Azure-portalen går du till din API Management-instans.
Välj API:er>MCP-servrar och välj sedan den MCP-server som du vill logga.
Välj Inställningar>Diagnostikloggar.
Aktivera loggning av front-end- och back-end-payload. Välj Spara.
Försiktighet
Verktygsargument och resultat kan innehålla frågor, kunddata eller hemligheter. Aktivera endast nyttolastloggning för MCP-servrar och miljöer där du behöver den. Använd rensnings- eller anspråkslista före bred distribution.
Fråga efter MCP-trafik med KQL
Följande är exempel på Kusto-frågor som du kan köra i Azure Monitor för att analysera MCP-trafik. I de här exemplen ersätter du sales-mcp med namnet på mcp-servern där det är tillämpligt.
Lista de senaste 50 verktygsanropen på en viss MCP-server
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
De främsta MCP-klienterna efter verktygsanropsvolym
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 och p95 svarstid per verktyg under de senaste 24 timmarna
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
Felfrekvens per verktyg över tid
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
Granska argument som skickas till ett specifikt verktyg
I det här scenariot kontrollerar du att nyttolastloggning är aktiverad för MCP-servern.
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"]
Lägg till anpassade dimensioner med spårningsprincipen
Om du vill samla in data som inte finns i det inbyggda schemat – till exempel ett anpassat x-agent-id huvud, ett JWT-anspråk eller ett korrelations-ID – använder du spårningsprincipen i MCP-serverns omfång.
Varning
Använd inte context.Response.Body via principer som är kopplade till MCP-omfånget. MCP-svar strömmar, och att läsa svarsinnehållet bryter strömningen.
MCP-telemetrireferens
Följande dimensioner visas på varje MCP-begäran:
| Fastighet | Beskrivning |
|---|---|
gen_ai.operation.name |
JSON-RPC -metoden (verktyg/lista eller verktyg/anrop). |
gen_ai.conversation.id |
MCP-sessions-ID. |
network.protocol.name |
Protokollnamn (MCP). |
network.protocol.version |
Protokollversion. |
auth.type |
Inkommande autentiseringsmetod. |
user_agent.name |
MCP-klientnamn (till exempel vscode eller claude-desktop). |
user_agent.version |
MCP-klientversion. |
service.name |
MCP-servernamn. |
service.version |
MCP-serverversion. |
api.type |
API-typdiskriminator (Mcp). |
error.message |
Felsträng vid misslyckande. |
error.type |
Felkategori vid misslyckande. |
Ytterligare fält i verktyg/lista
| Metric | Beskrivning |
|---|---|
ToolCount |
Antal verktyg som returneras i svaret. |
Ytterligare fält i verktyg/anrop
| Fastighet | Beskrivning |
|---|---|
gen_ai.tool.name |
Verktyg som agenten anropade. |
gen_ai.tool.type |
Verktygstyp. |
gen_ai.tool.call.arguments |
Argument JSON. Finns endast när loggning av nyttolastdata är aktiverad. |
gen_ai.tool.call.result |
JSON-resultat Visas endast när nyttolastloggning är aktiverad. |