Operazioni graphQL

Ogni query GraphQL e la mutazione eseguite tramite l'API fabric per GraphQL genera log delle operazioni dettagliati che acquisiscono metriche delle prestazioni, testo di query, dettagli di autenticazione e risultati di esecuzione. Questi log vengono raccolti e archiviati automaticamente nel database di monitoraggio dell'area di lavoro, fornendo visibilità sul modo in cui vengono usate le API GraphQL e su come vengono eseguite.

I log delle operazioni graphQL fanno parte della funzionalità di monitoraggio dell'area di lavoro di Fabric. Quando si abilita il monitoraggio dell'area di lavoro, Fabric crea un database eventhouse nell'area di lavoro che raccoglie continuamente i log da tutte le API GraphQL. È possibile eseguire query su questi log usando KQL (Kusto Query Language) per risolvere i problemi, ottimizzare le prestazioni, tenere traccia dei modelli di utilizzo e assicurarsi che le API soddisfino i requisiti del contratto di servizio.

Prerequisiti

Per accedere ai log delle operazioni graphQL ed eseguire query:

  1. Abilitare il monitoraggio dell'area di lavoro nell'area di lavoro Infrastruttura
  2. Accedere al database KQL di Eventhouse creato per l'area di lavoro
  3. Familiarità con il linguaggio di query Kusto (KQL) per l'esecuzione di query sui log

Dopo aver abilitato il monitoraggio, le operazioni GraphQL vengono registrate automaticamente in due tabelle: GraphQLMetrics per le metriche aggregate e GraphQLLog per i log delle operazioni dettagliate.

Chi usa i log delle operazioni graphQL

I log delle operazioni e il monitoraggio sono essenziali per:

  • Amministratori dell'area di lavoro infrastruttura che monitora l'utilizzo, le prestazioni e il consumo di capacità dell'API GraphQL
  • Data engineer che monitora i modelli di accesso ai dati e ottimizza le query di fabric lakehouse e warehouse
  • I team DevOps garantiscono che le applicazioni di produzione che usano i dati di Fabric soddisfino i requisiti del contratto di servizio
  • Amministratori della capacità dell'infrastruttura che comprende le metriche di consumo delle API per la pianificazione della capacità e la gestione dei costi

Usare i log delle operazioni quando è necessario monitorare, risolvere i problemi o analizzare le prestazioni e l'utilizzo delle API GraphQL di Fabric.

Log delle operazioni graphQL

Un evento di log per ogni query eseguita dall'API fabric per GraphQL nelle origini dati connesse viene archiviato in due tabelle complementari:

  • GraphQLMetrics: contiene dati delle metriche aggregati con riepiloghi con granularità temporale, ideale per il monitoraggio delle prestazioni e l'analisi delle tendenze
  • GraphQLLog: contiene log delle operazioni dettagliati con dettagli completi sul testo della query e sull'esecuzione, ideale per la risoluzione dei problemi relativi a query specifiche

Usare questi log per:

  • Identificare le modifiche del comportamento e la potenziale riduzione delle prestazioni delle API
  • Rilevare query insolite o con elevato carico di risorse
  • Identificare utenti e applicazioni con il maggior numero di query
  • Analizzare le prestazioni e le tendenze delle query
  • Risolvere i problemi di query lente
  • Diagnosticare i problemi relativi a query GraphQL specifiche

Tabella GraphQLMetrics

La GraphQLMetrics tabella archivia le metriche aggregate per le operazioni GraphQL. Usare questa tabella per il monitoraggio delle prestazioni, la pianificazione della capacità e l'identificazione delle tendenze nel tempo.

Questa tabella contiene le colonne seguenti:

Nome colonna Tipo Descrizione
Timestamp: datetime Timestamp (UTC) di quando la voce di log è stata generata quando il record è stato creato dall'origine dati.
ItemId string ID univoco della risorsa che registra i dati.
ItemKind string Tipo di elemento che registra l'operazione.
ItemName string Nome dell'artefatto fabric che registra questa operazione.
WorkspaceId string Identificatore univoco dell'area di lavoro Infrastruttura che contiene l'artefatto utilizzato
WorkspaceName string Nome dell'area di lavoro Infrastruttura contenente l'artefatto.
CapacityId string Identificatore univoco della capacità che ospita l'artefatto su cui viene eseguito l'esecuzione.
CustomerTenantId string ID tenant del cliente, in cui è stata eseguita l'operazione.
PlatformMonitoringTableName string Il nome della tabella ai record appartiene (o al tipo di evento certificato del record). Il formato è <WorkloadName> + [OperationType>]+ <TelemetryType>
Paese string Area della risorsa che emette l'evento; ad esempio Stati Uniti orientali o Francia meridionale.
MetricTimeGrain string Intervallo di tempo della metrica (durata ISO 8601).
MetricUnitName string Unità della metrica.
MetricSumValue long Valore di somma aggregato di una metrica durante un singolo minuto.
DatasourceTypes dynamic Matrice di tipi DataSource utilizzati dal modello.
ResultCode string Codice errore delle attività non riuscite, usato per estendere l'utilizzo all'affidabilità.
Stato string Stato dell'operazione. La query è stata eseguita correttamente con errori o errori.

Tabella GraphQLLog

La GraphQLLog tabella archivia i log delle operazioni dettagliati per ogni esecuzione di query GraphQL. Usare questa tabella per la risoluzione dei problemi relativi a query specifiche, l'analisi del testo delle query e l'analisi di errori o problemi di prestazioni.

Per altre informazioni sugli eventi e un drill-down nell'evento ExecutionMetrics , vedere Eventi e schema.

Questa tabella contiene le colonne seguenti:

Nome colonna Tipo Descrizione
Timestamp: datetime Timestamp (UTC) di quando la voce di log è stata generata quando il record è stato creato dall'origine dati.
OperationName string Nome dell'operazione.
ItemId string ID univoco della risorsa che registra i dati.
ItemKind string Tipo di elemento che registra l'operazione.
ItemName string Nome dell'artefatto fabric che registra questa operazione.
WorkspaceId string Identificatore univoco dell'area di lavoro Infrastruttura che contiene l'artefatto su cui viene eseguito l'operazione.
WorkspaceName string Nome dell'area di lavoro Infrastruttura contenente l'artefatto.
CapacityId string Identificatore univoco della capacità che ospita l'artefatto su cui viene eseguito l'esecuzione.
CorrelationId string ID attività radice.
OperationId string Identificatore univoco per l'operazione registrata.
Identità dynamic Dettagli utente e attestazione. Utente associato all'operazione segnalata.
CustomerTenantId string ID tenant del cliente, in cui è stata eseguita l'operazione.
DurationMs long Tempo di CPU trascorso che è trascorso mentre tutte le operazioni necessarie sono state elaborate. L'unità è espressa in millisecondi.
Stato string Stato dell'operazione. La query è stata eseguita correttamente con errori o errori.
Livello string Metadati richiesti dal team di monitoraggio della piattaforma.
Paese string Area della risorsa che emette l'evento; ad esempio Stati Uniti orientali o Francia meridionale.
PlatformMonitoringTableName string Il nome della tabella ai record appartiene (o al tipo di evento certificato del record). Il formato è <WorkloadName> + [OperationType>]+ <TelemetryType>
QueryText string Testo della query.
GraphQLOverheadDurationMs long Overhead graphQL in ms per una richiesta del piano dati.
ProcessedBytes long Volume di dati elaborato in byte.
TransportProtocol string Protocollo di trasporto per una richiesta.
QueryResultMessage string Questa dimensione viene utilizzata per fornire contesto aggiuntivo al risultato di un'operazione di query.

Query di esempio

Usare queste query KQL per analizzare i log delle operazioni di GraphQL. È possibile eseguire queste query direttamente nell'editor di query eventhouse all'interno dell'area di lavoro.

Trovare le query lente

Identificare le query GraphQL che richiedono più di 5 secondi per l'esecuzione:

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

Utenti principali per numero di query

Individuare gli utenti o le applicazioni che effettuano la maggior parte delle richieste GraphQL:

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

Analisi della frequenza degli errori

Calcolare la frequenza degli errori per le operazioni GraphQL nel tempo:

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

La maggior parte delle query a elevato utilizzo di risorse

Identificare le query che elaborano la quantità massima di dati:

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

Analizzare le prestazioni medie delle query nelle ultime 24 ore:

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

Per altri esempi di monitoraggio dell'area di lavoro, visitare il monitoraggio dell'area di lavoro nel repository GitHub degli esempi di Infrastruttura.