Udostępnij przez


Operacje graphQL

Każde zapytanie GraphQL i mutacja wykonywane za pośrednictwem interfejsu API sieci szkieletowej dla języka GraphQL generuje szczegółowe dzienniki operacji, które przechwytują metryki wydajności, tekst zapytania, szczegóły uwierzytelniania i wyniki wykonywania. Te dzienniki są automatycznie zbierane i przechowywane w bazie danych monitorowania obszaru roboczego, zapewniając wgląd w sposób używania interfejsów API języka GraphQL i sposobu ich działania.

Dzienniki operacji graphQL są częścią możliwości monitorowania obszaru roboczego sieci Szkieletowej. Po włączeniu monitorowania obszaru roboczego sieć szkieletowa tworzy bazę danych usługi Eventhouse w obszarze roboczym, która stale zbiera dzienniki ze wszystkich interfejsów API graphQL. Możesz wykonywać zapytania dotyczące tych dzienników przy użyciu języka KQL (Kusto Query Language), aby rozwiązać problemy, zoptymalizować wydajność, śledzić wzorce użycia i upewnić się, że interfejsy API spełniają wymagania umowy SLA.

Wymagania wstępne

Aby uzyskać dostęp do dzienników operacji programu GraphQL i wykonywać względem ich zapytań:

  1. Włączanie monitorowania obszaru roboczego w obszarze roboczym usługi Fabric
  2. Uzyskiwanie dostępu do bazy danych KQL usługi Eventhouse utworzonej dla obszaru roboczego
  3. Znajomość języka KQL (Kusto Query Language) na potrzeby wykonywania zapytań dotyczących dzienników

Po włączeniu monitorowania operacje graphQL są automatycznie rejestrowane w dwóch tabelach: GraphQLMetrics dla zagregowanych metryk i GraphQLLog szczegółowych dzienników operacji.

Kto używa dzienników operacji GraphQL

Dzienniki operacji i monitorowanie są niezbędne dla:

  • Administratorzy obszaru roboczego sieci szkieletowej monitorujący użycie interfejsu API GraphQL, wydajność i zużycie pojemności
  • Inżynierowie danych śledzący wzorce dostępu do danych i optymalizowanie zapytań usługi Fabric lakehouse i magazynu
  • Zespoły DevOps zapewniające aplikacje produkcyjne korzystające z danych sieci Szkieletowej spełniają wymagania umowy SLA
  • Administratorzy pojemności sieci szkieletowej rozumieją metryki użycia interfejsu API na potrzeby planowania pojemności i zarządzania kosztami

Użyj dzienników operacji, gdy musisz monitorować, rozwiązywać problemy lub analizować wydajność i użycie interfejsów API graphQL usługi Fabric.

Dzienniki operacji programu GraphQL

Zdarzenie dziennika dla każdego zapytania uruchamianego przez interfejs API sieci szkieletowej dla języka GraphQL w połączonych źródłach danych jest przechowywane w dwóch uzupełniających tabelach:

  • GraphQLMetrics: zawiera zagregowane dane metryk z podsumowaniami ziarna czasu, idealne do monitorowania wydajności i analizy trendów
  • GraphQLLog: zawiera szczegółowe dzienniki operacji z pełnym tekstem zapytania i szczegółami wykonywania, idealne do rozwiązywania problemów z określonymi zapytaniami

Użyj następujących dzienników, aby:

  • Identyfikowanie zmian zachowania i potencjalnego obniżenia wydajności interfejsu API
  • Wykrywanie nietypowych lub dużych zasobów zapytań
  • Identyfikowanie użytkowników i aplikacji z największą liczbą zapytań
  • Analizowanie wydajności zapytań i trendów
  • Rozwiązywanie problemów z wolnymi zapytaniami
  • Diagnozowanie problemów z określonymi zapytaniami GraphQL

Tabela GraphQLMetrics

Tabela GraphQLMetrics przechowuje zagregowane metryki dla operacji GraphQL. Ta tabela służy do monitorowania wydajności, planowania pojemności i identyfikowania trendów w czasie.

Ta tabela zawiera następujące kolumny:

Nazwa kolumny Typ Opis
Sygnatura czasowa data/godzina Sygnatura czasowa (UTC) czasu wygenerowania wpisu dziennika podczas tworzenia rekordu przez źródło danych.
ItemId ciąg Unikatowy identyfikator rejestrowania danych przez zasób.
ItemKind ciąg Typ rejestrowania artefaktu operacji.
Nazwa_produktu ciąg Nazwa artefaktu sieci szkieletowej rejestrowania tej operacji.
WorkspaceId ciąg Unikatowy identyfikator obszaru roboczego sieć szkieletowa, który zawiera artefakt, na którym działa
Nazwa obszaru roboczego ciąg Nazwa obszaru roboczego Sieć szkieletowa zawierająca artefakt.
Identyfikator pojemności ciąg Unikatowy identyfikator pojemności obsługującej artefakt, na który działa.
CustomerTenantId ciąg Identyfikator dzierżawy klienta, w którym wykonano operację.
PlatformMonitoringTableName ciąg Nazwa tabeli do rekordów należy (lub certyfikowany typ zdarzenia rekordu). Format to <WorkloadName> + [OperationType]+ >TelemetryType<>
Region (Region) ciąg Region zasobu emitujący zdarzenie; na przykład Wschodnie stany USA lub Francja Południowa.
MetricTimeGrain ciąg Ziarno czasu metryki (czas trwania ISO 8601).
MetricUnitName ciąg Jednostka metryki.
MetricSumValue długi Zagregowana wartość sumy metryki w ciągu jednej minuty.
DatasourceTypes dynamiczna Tablica typów źródła danych, które są używane przez model.
Kod wyniku ciąg Kod błędu działań, których działanie zakończyło się niepowodzeniem, używane do rozszerzania użycia na niezawodność.
Stan ciąg Stan operacji. Zapytanie zostało wykonane pomyślnie/pomyślnie z błędami/niepowodzeniem.

Tabela GraphQLLog

Tabela GraphQLLog przechowuje szczegółowe dzienniki operacji dla każdego wykonywania zapytań GraphQL. Ta tabela służy do rozwiązywania problemów z określonymi zapytaniami, analizowania tekstu zapytania i badania błędów lub problemów z wydajnością.

Aby uzyskać więcej informacji na temat zdarzeń i przechodzenia do szczegółów zdarzenia ExecutionMetrics , zobacz Zdarzenia i schemat.

Ta tabela zawiera następujące kolumny:

Nazwa kolumny Typ Opis
Sygnatura czasowa data/godzina Sygnatura czasowa (UTC) czasu wygenerowania wpisu dziennika podczas tworzenia rekordu przez źródło danych.
OperationName ciąg Nazwa operacji.
ItemId ciąg Unikatowy identyfikator rejestrowania danych przez zasób.
ItemKind ciąg Typ rejestrowania artefaktu operacji.
Nazwa_produktu ciąg Nazwa artefaktu sieci szkieletowej rejestrowania tej operacji.
WorkspaceId ciąg Unikatowy identyfikator obszaru roboczego Sieć szkieletowa, który zawiera artefakt, na którym działa.
Nazwa obszaru roboczego ciąg Nazwa obszaru roboczego Sieć szkieletowa zawierająca artefakt.
Identyfikator pojemności ciąg Unikatowy identyfikator pojemności obsługującej artefakt, na który działa.
CorrelationId ciąg Identyfikator działania głównego.
Identyfikator operacji ciąg Unikatowy identyfikator rejestrowanej operacji.
Tożsamość dynamiczna Szczegóły użytkownika i oświadczenia. Użytkownik skojarzony z zgłaszaną operacją.
CustomerTenantId ciąg Identyfikator dzierżawy klienta, w którym wykonano operację.
DurationMs długi Upłynął czas procesora CPU, który minął, podczas przetwarzania wszystkich wymaganych operacji. Jednostka jest wyrażona w milisekundach.
Stan ciąg Stan operacji. Zapytanie zostało wykonane pomyślnie/pomyślnie z błędami/niepowodzeniem.
Poziom ciąg Metadane wymagane przez zespół ds. monitorowania platformy.
Region (Region) ciąg Region zasobu emitujący zdarzenie; na przykład Wschodnie stany USA lub Francja Południowa.
PlatformMonitoringTableName ciąg Nazwa tabeli do rekordów należy (lub certyfikowany typ zdarzenia rekordu). Format to <WorkloadName> + [OperationType]+ >TelemetryType<>
Tekst zapytania ciąg Tekst zapytania.
GraphQLOverheadDurationMs długi Obciążenie graphQL w ms dla żądania płaszczyzny danych.
Przetworzone bajty długi Przetworzony wolumin danych w bajtach.
TransportProtocol ciąg Protokół transportu dla żądania.
QueryResultMessage ciąg Ten wymiar służy do nadawania dodatkowego kontekstu wynikowi operacji zapytania.

Przykładowe zapytania

Użyj tych zapytań KQL do analizowania dzienników operacji graphQL. Te zapytania można uruchamiać bezpośrednio w edytorze zapytań usługi Eventhouse w obszarze roboczym.

Odnajdowanie wolnych zapytań

Zidentyfikuj zapytania GraphQL, które będą wykonywane dłużej niż 5 sekund:

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

Najwięcej użytkowników według liczby zapytań

Znajdź użytkowników lub aplikacje, którzy robią najwięcej żądań GraphQL:

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

Analiza szybkości błędów

Oblicz współczynnik błędów dla operacji GraphQL w czasie:

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

Większość zapytań intensywnie korzystających z zasobów

Zidentyfikuj zapytania, które przetwarzają największą ilość danych:

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

Analizowanie średniej wydajności zapytań w ciągu ostatnich 24 godzin:

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

Aby uzyskać więcej przykładów monitorowania obszaru roboczego, odwiedź stronę Monitorowanie obszaru roboczego w repozytorium GitHub przykłady sieci szkieletowej.