GraphQL-Vorgänge

Jede GraphQL-Abfrage und -Mutation, die über Ihre Fabric-API für GraphQL ausgeführt wird, generiert detaillierte Vorgangsprotokolle, die Leistungsmetriken, Abfragetext, Authentifizierungsdetails und Ausführungsergebnisse erfassen. Diese Protokolle werden automatisch gesammelt und in der Überwachungsdatenbank Ihres Arbeitsbereichs gespeichert und bieten Einblicke in die Verwendung Ihrer GraphQL-APIs und deren Leistung.

GraphQL-Vorgangsprotokolle sind Teil der Arbeitsbereichsüberwachungsfunktion von Fabric. Wenn Sie die Arbeitsbereichsüberwachung aktivieren, erstellt Fabric eine Eventhouse-Datenbank in Ihrem Arbeitsbereich, die kontinuierlich Protokolle aller GraphQL-APIs sammelt. Sie können diese Protokolle mithilfe von KQL (Kusto Query Language) abfragen, um Probleme zu beheben, die Leistung zu optimieren, Verwendungsmuster nachzuverfolgen und sicherzustellen, dass Ihre APIs SLA-Anforderungen erfüllen.

Voraussetzungen

So greifen Sie auf GraphQL-Vorgangsprotokolle zu und abfragen:

  1. Aktivieren der Arbeitsbereichüberwachung in Ihrem Fabric-Arbeitsbereich
  2. Zugreifen auf die für Ihren Arbeitsbereich erstellte Eventhouse-KQL-Datenbank
  3. Vertrautheit mit der Kusto Query Language (KQL) zum Abfragen der Protokolle

Sobald die Überwachung aktiviert ist, werden GraphQL-Vorgänge automatisch in zwei Tabellen protokolliert: GraphQLMetrics für aggregierte Metriken und GraphQLLog für detaillierte Vorgangsprotokolle.

Wer GraphQL-Vorgangsprotokolle verwendet

Betriebsprotokolle und Überwachung sind für Folgendes unerlässlich:

  • Fabric-Arbeitsbereichsadministratoren überwachen die GraphQL-API-Nutzung, Leistung und Kapazitätsnutzung
  • Datentechniker verfolgen Datenzugriffsmuster und optimieren Fabric Lakehouse- und Warehouse-Abfragen
  • DevOps-Teams , die sicherstellen, dass Produktionsanwendungen, die Fabric-Daten verbrauchen, SLA-Anforderungen erfüllen
  • Fabric-Kapazitätsadministratoren , die API-Verbrauchsmetriken für die Kapazitätsplanung und die Kostenverwaltung verstehen

Verwenden Sie Vorgangsprotokolle, wenn Sie die Leistung und Verwendung Ihrer Fabric GraphQL-APIs überwachen, beheben oder analysieren müssen.

GraphQL-Vorgangsprotokolle

Ein Protokollereignis für jede Abfrage, die von der Fabric-API für GraphQL in den verbundenen Datenquellen ausgeführt wird, wird in zwei ergänzenden Tabellen gespeichert:

  • GraphQLMetrics: Enthält aggregierte Metrikdaten mit Zeitkornzusammenfassungen, ideal für Leistungsüberwachung und Trendanalyse
  • GraphQLLog: Enthält detaillierte Vorgangsprotokolle mit vollständigen Abfragetext- und Ausführungsdetails, ideal für die Problembehandlung bestimmter Abfragen

Verwenden Sie die folgenden Protokolle, um:

  • Identifizieren von Verhaltensänderungen und potenzieller API-Beeinträchtigungen
  • Erkennen ungewöhnlicher oder ressourcenintensiver Abfragen
  • Identifizieren Sie Benutzer und Anwendungen mit der höchsten Anzahl von Abfragen.
  • Analysieren der Abfrageleistung und Trends
  • Beheben des Problems langsamer Abfragen
  • Diagnostizieren von Problemen mit bestimmten GraphQL-Abfragen

GraphQLMetrics-Tabelle

In der GraphQLMetrics Tabelle werden aggregierte Metriken für GraphQL-Vorgänge gespeichert. Verwenden Sie diese Tabelle für Leistungsüberwachung, Kapazitätsplanung und Identifizierung von Trends im Laufe der Zeit.

Diese Tabelle enthält die folgenden Spalten:

Spaltenname type BESCHREIBUNG
Timestamp datetime Der Zeitstempel (UTC) des Zeitpunkts, zu dem der Protokolleintrag generiert wurde, als der Datensatz von der Datenquelle erstellt wurde.
ItemId Zeichenfolge Eindeutige ID der Ressource, die die Daten protokolliert.
ItemKind Zeichenfolge Typ des Artefakts, das den Vorgang protokolliert.
Artikelname Zeichenfolge Der Name der Fabric-Artefaktprotokollierung für diesen Vorgang.
WorkspaceId Zeichenfolge Eindeutiger Bezeichner des Fabric-Arbeitsbereichs, der das Artefakt enthält, das vom Vorgang betroffen ist.
WorkspaceName Zeichenfolge Name des Fabric-Arbeitsbereichs, der das Artefakt enthält.
CapacityId Zeichenfolge Eindeutiger Bezeichner der Kapazität, die das Artefakt hostet, das vom Vorgang betroffen ist.
CustomerTenantId Zeichenfolge Kundenmandanten-ID, in der der Vorgang ausgeführt wurde.
PlatformMonitoringTableName Zeichenfolge Der Name der Tabelle, zu der Datensätzen gehört (oder der zertifizierte Ereignistyp des Datensatzes). Das Format lautet <WorkloadName> + [OperationType>]+ <TelemetryType>
Region Zeichenfolge Die Region der Ressource, die das Ereignis ausgibt, z. B USA, Osten oder Frankreich, Süden.
MetricTimeGrain Zeichenfolge Aggregationsintervall der Metrik (ISO 8601 Duration).
MetricUnitName Zeichenfolge Einheit der Metrik
MetricSumValue long Der aggregierte Summenwert einer Metrik während einer einzelnen Minute.
DatasourceTypes dynamisch Array von DataSource-Typen, die vom Modell verwendet werden.
ResultCode Zeichenfolge Fehlercode der fehlgeschlagenen Aktivitäten, der verwendet wird, um den Verbrauch auf die Zuverlässigkeit auszudehnen.
Status Zeichenfolge Der Status des Vorgangs. Die Abfrage war erfolgreich/erfolgreich mit Fehlern/fehlerhaft.

GraphQLLog-Tabelle

In der GraphQLLog Tabelle werden detaillierte Vorgangsprotokolle für jede GraphQL-Abfrageausführung gespeichert. Verwenden Sie diese Tabelle, um bestimmte Abfragen zu behandeln, Abfragetext zu analysieren und Fehler oder Leistungsprobleme zu untersuchen.

Weitere Informationen zu den Ereignissen und einem Drilldown zum ExecutionMetrics-Ereignis finden Sie unter Ereignisse und Schema.

Diese Tabelle enthält die folgenden Spalten:

Spaltenname type BESCHREIBUNG
Timestamp datetime Der Zeitstempel (UTC) des Zeitpunkts, zu dem der Protokolleintrag generiert wurde, als der Datensatz von der Datenquelle erstellt wurde.
Vorgangsname Zeichenfolge Der Name des Vorgangs.
ItemId Zeichenfolge Eindeutige ID der Ressource, die die Daten protokolliert.
ItemKind Zeichenfolge Typ des Artefakts, das den Vorgang protokolliert.
Artikelname Zeichenfolge Der Name der Fabric-Artefaktprotokollierung für diesen Vorgang.
WorkspaceId Zeichenfolge Eindeutiger Bezeichner des Fabric-Arbeitsbereichs, der das Artefakt enthält, das vom Vorgang betroffen ist.
WorkspaceName Zeichenfolge Name des Fabric-Arbeitsbereichs, der das Artefakt enthält.
CapacityId Zeichenfolge Eindeutiger Bezeichner der Kapazität, die das Artefakt hostet, das vom Vorgang betroffen ist.
CorrelationId Zeichenfolge Stamm-Aktivitäts-ID.
OperationId Zeichenfolge Eindeutiger Bezeichner für den protokollierten Vorgang.
Identität dynamisch Benutzer- und Anspruchsdetails. Der Benutzer, der dem gemeldeten Vorgang zugeordnet ist.
CustomerTenantId Zeichenfolge Kundenmandanten-ID, in der der Vorgang ausgeführt wurde.
DurationMs long Verstrichene CPU-Zeit, die überschritten wurde, während alle erforderlichen Vorgänge verarbeitet wurden. Einheit in Millisekunden.
Status Zeichenfolge Der Status des Vorgangs. Die Abfrage war erfolgreich/erfolgreich mit Fehlern/fehlerhaft.
Ebene Zeichenfolge Metadaten, die vom Plattformüberwachungsteam benötigt werden.
Region Zeichenfolge Die Region der Ressource, die das Ereignis ausgibt, z. B USA, Osten oder Frankreich, Süden.
PlatformMonitoringTableName Zeichenfolge Der Name der Tabelle, zu der Datensätzen gehört (oder der zertifizierte Ereignistyp des Datensatzes). Das Format lautet <WorkloadName> + [OperationType>]+ <TelemetryType>
QueryText Zeichenfolge Der Text der Abfrage.
GraphQLOverheadDurationMs long Der GraphQL-Overhead in ms für eine Datenebenenanforderung.
ProcessedBytes long Verarbeitetes Datenvolume in Byte.
TransportProtocol Zeichenfolge Transportprotokoll für eine Anforderung.
QueryResultMessage Zeichenfolge Diese Dimension wird verwendet, um dem Ergebnis eines Abfragevorgangs zusätzlichen Kontext zu geben.

Beispielabfragen

Verwenden Sie diese KQL-Abfragen, um Ihre GraphQL-Vorgangsprotokolle zu analysieren. Sie können diese Abfragen direkt im Eventhouse-Abfrage-Editor in Ihrem Arbeitsbereich ausführen.

Ermitteln von langsamen Abfragen

Identifizieren Sie GraphQL-Abfragen, die länger als 5 Sekunden dauern, um folgendes auszuführen:

GraphQLLog
| where DurationMs > 5000
| project Timestamp, ItemName, DurationMs, QueryText, Status, Identity
| order by DurationMs desc
| take 20

Die häufigsten Benutzer nach Abfrageanzahl

Suchen Sie, welche Benutzer oder Anwendungen die meisten GraphQL-Anforderungen stellen:

GraphQLLog
| summarize QueryCount = count() by Identity
| order by QueryCount desc
| take 10

Fehlerratenanalyse

Berechnen der Fehlerrate für GraphQL-Vorgänge im Laufe der Zeit:

GraphQLLog
| summarize 
    TotalQueries = count(),
    FailedQueries = countif(Status == "failed"),
    ErrorRate = (countif(Status == "failed") * 100.0) / count()
    by bin(Timestamp, 1h)
| order by Timestamp desc

Die meisten ressourcenintensiven Abfragen

Identifizieren Sie Abfragen, die die größte Datenmenge verarbeiten:

GraphQLLog
| where ProcessedBytes > 0
| project Timestamp, ItemName, ProcessedBytes, QueryText, DurationMs
| order by ProcessedBytes desc
| take 20

Analysieren Sie die durchschnittliche Abfrageleistung in den letzten 24 Stunden:

GraphQLMetrics
| where Timestamp > ago(24h)
| summarize 
    AvgDuration = avg(MetricSumValue),
    MaxDuration = max(MetricSumValue),
    QueryCount = count()
    by bin(Timestamp, 1h), ItemName
| order by Timestamp desc

Weitere Beispiele für die Arbeitsbereichüberwachung finden Sie im Fabric-Beispiel-GitHub-Repository .