Rozwiązywanie problemów z zapytaniami diagnostycznymi
DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
W tym artykule omówiono sposób pisania prostych zapytań, aby ułatwić rozwiązywanie problemów z kontem usługi Azure Cosmos DB przy użyciu dzienników diagnostycznych wysyłanych do tabel AzureDiagnostics (starsza wersja) i specyficznych dla zasobów (wersja zapoznawcza).
W przypadku tabel Diagnostyka Azure wszystkie dane są zapisywane w jednej tabeli, a użytkownicy muszą określić kategorię, którą mają wykonywać zapytania.
W przypadku tabel specyficznych dla zasobów dane są zapisywane w poszczególnych tabelach dla każdej kategorii zasobu (niedostępne dla interfejsu API tabel). Zalecamy ten tryb, ponieważ znacznie ułatwia pracę z danymi, zapewnia lepszą możliwość odnajdywania schematów i poprawia wydajność zarówno opóźnień pozyskiwania, jak i czasów zapytań.
Typowe zapytania
Oto lista typowych zapytań dotyczących rozwiązywania problemów.
Wykonywanie zapytań dotyczących operacji, które trwają dłużej niż 3 milisekundy
Znajdź operacje, które mają czas trwania dłuższy niż 3 milisekundy.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
Wykonywanie zapytań dotyczących agentów użytkowników, którzy uruchamiają operacje
Znajdź agentów użytkowników skojarzonych z każdą operacją.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Wykonywanie zapytań dotyczących długotrwałych operacji
Znajdź operacje, które działały przez długi czas, łącząc środowisko uruchomieniowe z pięciosekundowymi interwałami.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Uzyskiwanie statystyk klucza partycji w celu oceny niesymetryczności na trzech pierwszych partycjach dla konta bazy danych
Miara niesymetryczności przez uzyskanie typowych statystyk dla partycji fizycznych.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Pobieranie opłat za żądania dla kosztownych zapytań
Zmierz opłatę za żądanie (w jednostkach RU) dla największych zapytań.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 10.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Znajdowanie operacji, które zajmują większość jednostek RU/s
Sortuj operacje według ilości jednostek RU/s, których używają.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(responseLength_s), max(requestLength_s), max(requestCharge_s), count = count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Pobieranie wszystkich zapytań korzystających z ponad 100 RU/s
Znajdź zapytania, które zużywają więcej jednostek RU/s niż ilość punktu odniesienia.
To zapytanie łączy się z danymi z DataPlaneRequests
i QueryRunTimeStatistics
.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 100.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Pobieranie opłat za żądanie i czas trwania wykonywania zapytania
Pobierz statystyki dotyczące opłaty za żądanie i czasu trwania dla określonego zapytania.
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "QueryRuntimeStatistics"
| join (
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "DataPlaneRequests"
) on $left.activityId_g == $right.activityId_g
| project databasename_s, collectionname_s, OperationName1 , querytext_s,requestCharge_s1, duration_s1, bin(TimeGenerated, 1min)
Pobieranie dystrybucji dla różnych operacji
Operacje grupowania według dystrybucji zasobów.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Uzyskiwanie maksymalnej przepływności używanej przez partycję
Uzyskaj maksymalną przepływność dla partycji fizycznej.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Uzyskiwanie informacji o użyciu kluczy partycji RU/s na sekundę
Mierzenie użycia jednostek RU/s na sekundę na klucz partycji.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s, TimeGenerated
| order by TimeGenerated asc
Pobieranie opłaty za żądanie dla określonego klucza partycji
Mierzenie opłaty za żądanie na klucz partycji.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Uzyskiwanie najważniejszych kluczy partycji z większością jednostek RU/s używanych w określonym okresie
Sortuj klucze partycji na podstawie użycia jednostek żądania w przedziale czasu.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where TimeGenerated >= datetime("11/26/2019, 11:20:00.000 PM") and TimeGenerated <= datetime("11/26/2019, 11:30:00.000 PM")
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s
| order by total desc
Pobieranie dzienników dla kluczy partycji, których rozmiar magazynu jest większy niż 8 GB
Znajdź dzienniki kluczy partycji filtrowanych według rozmiaru magazynu na klucz partycji.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
Pobieranie opóźnień P99 lub P50 dla operacji, opłat za żądanie lub długości odpowiedzi
Mierzenie wydajności dla; opóźnienie operacji, użycie jednostek RU/s i długość odpowiedzi.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2d)
| summarize percentile(todouble(responseLength_s), 50), percentile(todouble(responseLength_s), 99), max(responseLength_s), percentile(todouble(requestCharge_s), 50), percentile(todouble(requestCharge_s), 99), max(requestCharge_s), percentile(todouble(duration_s), 50), percentile(todouble(duration_s), 99), max(duration_s), count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Pobieranie dzienników płaszczyzny sterowania
Uzyskaj długą płaszczyznę sterowania przy użyciu polecenia ControlPlaneRequests
.
Napiwek
Pamiętaj, aby włączyć flagę opisaną w temacie Wyłączanie dostępu do zapisu metadanych opartych na kluczach i wykonywać operacje przy użyciu programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub usługi Azure Resource Manager.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Następne kroki
- Aby uzyskać więcej informacji na temat tworzenia ustawień diagnostycznych dla usługi Azure Cosmos DB, zobacz Tworzenie ustawień diagnostycznych.
- Aby uzyskać szczegółowe informacje na temat tworzenia ustawienia diagnostycznego przy użyciu witryny Azure Portal, interfejsu wiersza polecenia lub programu PowerShell, zobacz Tworzenie ustawienia diagnostycznego w celu zbierania dzienników platformy i metryk na platformie Azure.