Überwachen von Agentaktionen in Azure SRE-Agent

Ihr Agent protokolliert jede Aktion, einschließlich Toolaufrufe, Modellaufrufe, Vorfallbehandlungs- und Genehmigungsentscheidungen, für Ihre Application Insights-Ressource. Um genau zu sehen, was Ihr Agent getan hat, wann und warum, fragen Sie die Tabelle mithilfe der customEvents Kusto Query Language (KQL) ab. Greifen Sie direkt über Die Überwachungsprotokolle> im Agentportal aufProtokolle zu.

Wo finden Sie Ihre Protokolle?

Ihr Agent protokolliert automatisch alle Aktionen bei Azure Application Insights. Wenn Sie Ihren Agent erstellen, erstellen Sie auch eine Application Insights-Ressource.

So greifen Sie auf Ihre Protokolle zu:

  1. Wechseln Sie im Agentportal zu "Protokolle überwachen>".
  2. Diese Aktion öffnet die Application Insights-Ressource Ihres Agents im Azure-Portal.
  3. Verwenden Sie KQL, um die customEvents Tabelle abzufragen.

Die Standardabfrage ist traces | where timestamp > ago(1d). Ändern Sie diese Abfrage, um die Telemetrie der Agentaktion anzuzeigen customEvents .

Ereignistypen

Ihr Agent protokolliert neun benutzerdefinierte Ereignistypen in der customEvents Tabelle. Die folgende Abfrage zeigt alle Ereignistypen und deren Anzahl an:

customEvents
| summarize Count = count() by name
| sort by Count desc
Ereignisname Was er erfasst Typische Lautstärke
AgentResponse An Sie gesendete Chatantworten Hoch
ModelGeneration Jeder LLM-Aufruf (Eingabe-/Ausgabetoken, Modell-ID) Hoch
AgentToolExecution Jeder Toolaufruf (Name, Eingabe, Ausgabe) Hoch
AgentExecution Start-/End-Lebenszyklus der Agentsitzung Mittelstufe
MetaAgent Entscheidungen zum Agentrouting und zur Orchestrierung Mittelstufe
AgentHandoff Cross-Agent-Übergaben Mittelstufe
IncidentActivitySnapshot Lebenszyklus von Vorfällen (Schweregrad, Status, Ergebnis der Risikominderung) Niedrig
AgentAzCliExecution Azure CLI-Befehle, die vom Agent ausgeführt werden Niedrig
ApprovalDecision Ihre Genehmigung oder Ablehnung von vorgeschlagenen Aktionen Niedrig

Wichtige Ereignisse und deren Felder

In den folgenden Abschnitten werden die am häufigsten abgefragten Ereignistypen und deren Felder beschrieben.

Toolausführung (AgentToolExecution)

Das System protokolliert dieses Ereignis jedes Mal, wenn Ihr Agent ein Tool aufruft.

Feld Beschreibung Beispielwert
EventType ToolStart oder ToolEnd ToolStart
ToolName Name des Tools SearchResource
ToolInput An das Tool übergebene Argumente {"resourceTypes": ["microsoft.resources/subscriptions"]}
ToolOutput Vom Tool zurückgegebenes Ergebnis (für ToolEnd Ereignisse) (Toolausgabe JSON)
SubAgentName Name des Agents, der das Tool aufgerufen hat meta_agent
CallId Korrelations-ID für die Kopplung call_aaaabbbb-0000-cccc-...
customEvents
| where name == "AgentToolExecution"
| where customDimensions.EventType == "ToolStart"
| where timestamp > ago(7d)
| project timestamp,
    Tool = tostring(customDimensions.ToolName),
    Input = tostring(customDimensions.ToolInput)
| sort by timestamp desc

Vorfalllebenszyklus (IncidentActivitySnapshot)

Protokollieren Sie dieses Ereignis für jeden Vorfall, den Ihr Agent verarbeitet. Er erfasst den vollständigen Lebenszyklus von Der Erstellung bis zur Auflösung.

Feld Beschreibung Beispielwert
IncidentId Plattformvorfall-ID Q2VVG0T8K7AL0J
IncidentTitle Beschreibung des Incidents DailyIssueTriager blocked: cannot access repo
IncidentSeverity Schweregrad von Ihrer Plattform Not set
IncidentStatus Derzeitiger Status active
IncidentPlatform Quellplattform PagerDuty
IncidentMitigatedByAgent Gibt an, ob der Agent ihn aufgelöst hat. True oder False
IncidentAssistedByAgent Gibt an, ob agent bei der Untersuchung geholfen hat True oder False
AgentAutonomyLevel Wie der Agent es behandelt hat autonomous oder review
ResponsePlanId Welcher Antwortplan verwendet wurde PDtrigger
ResponsePlanCustom Standard- oder benutzerdefinierter Plan True oder False
IncidentImpactedService Betroffener Dienst SRE Agent
IncidentCreatedOn Wann ein Vorfall erstellt wurde ISO 8601 datetime
IncidentHandledOn Wann der Agent mit der Behandlung begonnen hat ISO 8601 datetime
IncidentMitigatedOn Beim Auflösen (falls entschärft) ISO 8601 datetime
// Incident outcomes over the last 30 days
customEvents
| where name == "IncidentActivitySnapshot"
| where timestamp > ago(30d)
| project timestamp,
    IncidentId = tostring(customDimensions.IncidentId),
    Title = tostring(customDimensions.IncidentTitle),
    Platform = tostring(customDimensions.IncidentPlatform),
    MitigatedByAgent = tostring(customDimensions.IncidentMitigatedByAgent),
    AssistedByAgent = tostring(customDimensions.IncidentAssistedByAgent),
    Autonomy = tostring(customDimensions.AgentAutonomyLevel),
    ResponsePlan = tostring(customDimensions.ResponsePlanId)
| sort by timestamp desc

Modellgenerierung (ModelGeneration)

Protokollieren Sie dieses Ereignis für jeden LLM-Aufruf. Es verfolgt die Tokenverwendung, die Modellauswahl und den anfordernden Agent.

Feld Beschreibung Beispielwert
EventType ModelGenerationStart, ModelGenerationEndoder ModelGenerationError ModelGenerationEnd
AgentName Agent, der den LLM-Anruf vorgibt daily_report_agent
ModelId Verwendetes Modell gpt-4o
InputTokens Token in der Eingabeaufforderung 29828
OutputTokens Token in der Antwort 871
ThreadId Unterhaltungsthread bb171c1f-3bb2-4895-...
// Token usage by agent in the last 7 days
customEvents
| where name == "ModelGeneration"
| where customDimensions.EventType == "ModelGenerationEnd"
| where timestamp > ago(7d)
| extend Agent = tostring(customDimensions.AgentName),
    InputTokens = toint(customDimensions.InputTokens),
    OutputTokens = toint(customDimensions.OutputTokens),
    Model = tostring(customDimensions.ModelId)
| summarize TotalInput = sum(InputTokens),
    TotalOutput = sum(OutputTokens),
    Calls = count()
    by Agent, Model
| sort by TotalInput desc

Genehmigungsentscheidungen (Genehmigungsentscheidung)

Protokollieren Sie dieses Ereignis, wenn Sie eine vorgeschlagene Agent-Aktion genehmigen oder ablehnen.

// All approval decisions
customEvents
| where name == "ApprovalDecision"
| where timestamp > ago(30d)
| project timestamp, customDimensions

Allgemeine Abfragen

Verwenden Sie die folgenden KQL-Abfragen, um allgemeine Fragen zum Verhalten Ihres Agents zu beantworten.

Was hat mein Agent in einem bestimmten Thread getan?

customEvents
| where timestamp > ago(7d)
| where tostring(customDimensions.ThreadId) == "<YOUR_THREAD_ID>"
| project timestamp,
    Event = name,
    EventType = tostring(customDimensions.EventType),
    Tool = tostring(customDimensions.ToolName),
    Agent = tostring(customDimensions.SubAgentName)
| sort by timestamp asc

Ersetzen Sie diese durch <YOUR_THREAD_ID> die Thread-ID aus Ihrer Unterhaltung.

Welche Tools verwenden Sie am häufigsten?

customEvents
| where name == "AgentToolExecution"
| where customDimensions.EventType == "ToolStart"
| where timestamp > ago(30d)
| summarize Count = count() by Tool = tostring(customDimensions.ToolName)
| sort by Count desc
| take 20

Wie viele Vorfälle hat der Agent abgemildert und unterstützt?

customEvents
| where name == "IncidentActivitySnapshot"
| where timestamp > ago(30d)
| summarize
    Total = count(),
    MitigatedByAgent = countif(tostring(customDimensions.IncidentMitigatedByAgent) == "True"),
    AssistedByAgent = countif(tostring(customDimensions.IncidentAssistedByAgent) == "True")

Trend zur täglichen Tokennutzung

customEvents
| where name == "ModelGeneration"
| where customDimensions.EventType == "ModelGenerationEnd"
| where timestamp > ago(30d)
| extend InputTokens = toint(customDimensions.InputTokens),
    OutputTokens = toint(customDimensions.OutputTokens)
| summarize TotalTokens = sum(InputTokens) + sum(OutputTokens) by bin(timestamp, 1d)
| render timechart

Freigegebene Felder für alle Ereignisse

Jedes benutzerdefinierte Ereignis enthält die folgenden Felder für Korrelation und Ablaufverfolgung.

Feld Beschreibung
gen_ai.agent.id Azure Resource Manager-ID Ihres Agents
gen_ai.agent.name Agentname
TraceId OpenTelemetry-Ablaufverfolgungs-ID, die Ereignisse in einer einzelnen Anforderung korreliert
SpanId OpenTelemetry span ID
ParentSpanId Übergeordnete Spanne für die Anrufhierarchie
ThreadId Unterhaltungsthread-GUID
LogTimestamp ISO 8601-Zeitstempel
CorrelationId Kurze Korrelations-ID für die Protokollgruppierung

Wird verwendet TraceId , um eine einzelne Anforderung von Benutzereingaben über Agentengrundlegungen, Toolanrufe und -antworten zu befolgen.

Azure-Aktivitätsprotokoll

Verwenden Sie für Vorgänge auf Azure-Ressourcenebene, z. B. das Erstellen, Aktualisieren oder Löschen der Agentressource, das Azure-Aktivitätsprotokoll. Das Aktivitätsprotokoll erfasst alle Azure Resource Manager-Vorgänge in Ihren Agent-, verwalteten Identitäts- und Application Insights-Ressourcen.

Greifen Sie auf die Aktivitätsanmeldung im Azure-Portal unter der Ressourcengruppe Ihres Agents zu.

Erste Schritte

Die Überwachungsprotokollierung wird für jeden Agent automatisch aktiviert. Öffnen Sie Überwachungsprotokolle> im Agentportal, um den Aktionsverlauf mithilfe von KQL abzufragen.

Ressource Was Sie lernen werden
Erstellen eines Kusto-Tools Erstellen von wiederverwendbaren KQL-Abfragen, um Ihre Überwachungsdaten zu minen
Erlaubnisse So steuert RBAC, wer Überwachungsdaten abfragen kann

Nächster Schritt