Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jakou telemetrii Azure API Management generuje pro provoz směrovaný na servery MCP, jak povolit protokolování datové části pro argumenty nástrojů a výsledky a jak se na tato data dotazovat v Azure Monitoru.
Předpoklady
Instance služby API Management s alespoň jedním serverem MCP. Viz Zveřejnění rozhraní REST API jako serveru MCP nebo zveřejnění existujícího serveru MCP.
Prostředek Application Insights propojený s vaší instancí služby API Management Další informace najdete v tématu Konfigurace Application Insights pro Azure API Management.
Výchozí telemetrie pro servery MCP
Pro každý požadavek MCP služba API Management zapíše řádek žádostí Application Insights s dimenzemi specifickými pro MCP a nastaví standardní pole doby trvání. Latenci jednotlivých nástrojů můžete zobrazit beze změny konfigurace. Podrobnosti najdete v části s referenčními informacemi k telemetrii MCP dále v tomto článku.
Note
Telemetrie MCP se řídí sémantickou konvencí OpenTelemetry pro generování umělé inteligence, která definuje standardní názvy atributů telemetrie (například gen_ai.*), takže data jsou konzistentní napříč nástroji.
Povolte protokolování datové části pro argumenty a výsledky
Ve výchozím nastavení služba API Management nezachytává argumenty a výsledky volání nástrojů. Povolení zachytávání pro server MCP:
Na portálu Azure přejděte do instance služby API Management.
Vyberte API>servery MCP a pak vyberte server MCP, který chcete protokolovat.
Vyberte Nastavení>diagnostických protokolů.
Povolte protokolování payloadů pro frontend i backend. Vyberte Uložit.
Caution
Argumenty a výsledky nástrojů můžou zahrnovat výzvy, zákaznická data nebo tajné kódy. Povolte protokolování payloadu pouze pro servery MCP a prostředí, kde ho potřebujete. Před plošným nasazením použijte scrubování nebo seznamy povolených deklarací identity.
Dotazování provozu MCP pomocí KQL
Následují ukázkové dotazy Kusto, které můžete spustit v Azure Monitor k analýze provozu MCP. V těchto příkladech nahraďte sales-mcp název serveru MCP tam, kde je to možné.
Zobrazení seznamu posledních 50 volání nástroje na daném serveru 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
Nejlepší klienti MCP podle objemu volání nástrojů
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
Latence p50 a p95 na nástroj za posledních 24 hodin
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
Míra chyb jednotlivých nástrojů v průběhu času
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
Kontrola argumentů odeslaných do konkrétního nástroje
V tomto scénáři se ujistěte, že je na serveru MCP povoleno protokolování obsahu přenášených dat.
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"]
Přidání vlastních dimenzí pomocí zásad trasování
Chcete-li zachytit data, která nejsou součástí předdefinovaného schématu – například vlastní hlavičku x-agent-id, atribut JWT nebo ID korelace – použijte zásadu trasování v rámci serveru MCP.
Warning
Nepřistupujte k context.Response.Body pomocí zásad připojených k rozsahu MCP. Odpovědi MCP se streamují a čtení textu přeruší datový proud.
Referenční informace k telemetrii MCP
Na každém požadavku MCP se zobrazí následující dimenze:
| Vlastnictví | Description |
|---|---|
gen_ai.operation.name |
metoda JSON-RPC (tools/list nebo tools/call). |
gen_ai.conversation.id |
ID relace MCP. |
network.protocol.name |
Název protokolu (MCP). |
network.protocol.version |
Verze protokolu. |
auth.type |
Metoda příchozího ověřování |
user_agent.name |
Název klienta MCP (například vscode nebo claude-desktop). |
user_agent.version |
Verze klienta MCP. |
service.name |
Název MCP serveru. |
service.version |
Verze serveru MCP. |
api.type |
Diskriminátor typu rozhraní API (Mcp). |
error.message |
Chybový řetězec v případě selhání. |
error.type |
Kategorie chyb při selhání |
Další pole v nástrojích nebo seznamu
| Metric | Description |
|---|---|
ToolCount |
Počet nástrojů vrácených v odpovědi |
Další pole v tools/call
| Vlastnictví | Description |
|---|---|
gen_ai.tool.name |
Nástroj, který agent vyvolal. |
gen_ai.tool.type |
Typ nástroje. |
gen_ai.tool.call.arguments |
Argumenty ve formátu JSON. Je přítomno pouze tehdy, pokud je povoleno protokolování datové části. |
gen_ai.tool.call.result |
Výsledek JSON. Je přítomna pouze tehdy, když je povoleno protokolování datové zátěže. |