Diagnosztikai lekérdezésekkel kapcsolatos problémák elhárítása
A KÖVETKEZŐKRE VONATKOZIK: Nosql MongoDB Cassandra Gremlin Táblázat
Ebből a cikkből megtudhatja, hogyan írhat egyszerű lekérdezéseket az Azure Cosmos DB-fiókjával kapcsolatos problémák elhárításához az AzureDiagnostics (örökölt) és erőforrás-specifikus (előzetes verzió) táblákba küldött diagnosztikai naplók használatával.
Az Azure Diagnostics-táblák esetében minden adat egyetlen táblába van írva, és a felhasználóknak meg kell adniuk, hogy melyik kategóriát szeretnék lekérdezni.
Erőforrás-specifikus táblák esetén az adatok az erőforrás minden kategóriájához külön táblákba lesznek írva (a table API-hoz nem érhetők el). Ezt a módot javasoljuk, mivel sokkal egyszerűbbé teszi az adatokkal való munkát, jobb felderíthetőséget biztosít a sémáknak, és javítja a teljesítményt a betöltési késés és a lekérdezési idők között is.
Gyakori lekérdezések
Íme a gyakori hibaelhárítási lekérdezések listája.
3 ezredmásodpercnél hosszabb ideig futó műveletek lekérdezése
Keresse meg a 3 ezredmásodpercnél hosszabb időtartamú műveleteket.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
A műveleteket futtató felhasználói ügynökök lekérdezése
Keresse meg az egyes műveletekhez társított felhasználói ügynököket.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Hosszú ideig futó műveletek lekérdezése
A hosszú ideig futó műveleteket úgy keresheti meg, hogy a futtatókörnyezetet öt másodperces időközökbe rendezi.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Partíciókulcs-statisztikák lekérése az adatbázisfiók első három partíciójának eltérésének kiértékeléséhez
A ferdeség mérése a fizikai partíciók általános statisztikáinak lekérésével.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Drága lekérdezések kérési díjainak lekérése
Mérje meg a legnagyobb lekérdezések kérelemdíját (kérelemegységekben).
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
Annak megkeresése, hogy mely műveletek hajtják végre a legtöbb RU/s-t
Rendezze a műveleteket az általuk használt ru/s mennyiség szerint.
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)
100 RU/s-nál több lekérdezés lekérése
Keresse meg azokat a lekérdezéseket, amelyek az alapkonfigurációnál több RU/s-t használnak fel.
Ez a lekérdezés a és QueryRunTimeStatistics
a helyről származó DataPlaneRequests
adatokkal csatlakozik.
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
A kérelem díjainak és a lekérdezés végrehajtási időtartamának lekérése
Egy adott lekérdezés statisztikáinak lekérése a kérelem díjában és időtartamában is.
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)
A különböző műveletek disztribúciójának lekérése
Műveletek csoportosítása az erőforrás-eloszlás szerint.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
A partíció által felhasznált maximális átviteli sebesség lekérése
Fizikai partíció maximális átviteli sebességének lekérése.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Információk lekérése a partíciókulcsok RU/s másodpercenkénti fogyasztásáról
Ru/s-felhasználás mérése másodpercenként partíciókulcsonként.
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
Adott partíciókulcs kérési díjának lekérése
A kérelem díjának mérése partíciókulcsonként.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
A legfelső partíciókulcsok lekérése egy adott időszakban felhasznált legtöbb RU/s használatával
Partíciókulcsok rendezése a kérelemegység-használat alapján egy időablakon belül.
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
Naplók lekérése a 8 GB-nál nagyobb tárterületméretű partíciókulcsokhoz
Keresse meg a partíciókulcsok naplóit a partíciókulcsonkénti tárterület mérete alapján szűrve.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
P99-es vagy P50-es késések lekérése a műveletekért, a kérelem díjáért vagy a válasz hosszáért
Teljesítmény mérése a következőhöz:; műveletkésés, RU/s-használat és válaszhossz.
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)
Vezérlősík naplóinak lekérése
A vezérlősík hosszú lekérése a paranccsal ControlPlaneRequests
.
Tipp
Ne felejtse el bekapcsolni a Kulcsalapú metaadatok írási hozzáférésének letiltása című szakaszban leírt jelzőt, és hajtsa végre a műveleteket a Azure PowerShell, az Azure CLI vagy az Azure Resource Manager használatával.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Következő lépések
- Az Azure Cosmos DB diagnosztikai beállításainak létrehozásáról további információt a Diagnosztikai beállítások létrehozása című témakörben talál.
- A diagnosztikai beállítások Azure Portalon, parancssori felületen vagy PowerShellen keresztüli létrehozásával kapcsolatos részletes információkért lásd: Diagnosztikai beállítás létrehozása platformnaplók és metrikák gyűjtéséhez az Azure-ban.