Tanılama sorguları ile ilgili sorunları giderme
ŞUNLAR IÇIN GEÇERLIDIR: NoSQL
MongoDB
Cassandra
Gremlin
Masa
Bu makalede, AzureDiagnostics (eski) ve Kaynağa özgü (önizleme) tablolarına gönderilen tanılama günlüklerini kullanarak Azure Cosmos DB hesabınızla ilgili sorunları gidermeye yardımcı olacak basit sorgular yazmayı ele alacağız.
Azure Tanılama tablolarda tüm veriler tek bir tabloya yazılır ve kullanıcıların sorgulamak istedikleri kategoriyi belirtmesi gerekir.
Kaynağa özgü tablolar için veriler, kaynağın her kategorisi için ayrı tablolara yazılır (tablo API'sinde kullanılamaz). Verilerle çalışmayı çok daha kolay hale getirdiğinden, şemaların daha iyi bulunabilirliğini sağladığından ve hem alma gecikme süresinde hem de sorgu sürelerinde performansı artırdığından bu modu öneririz.
Yaygın sorgular
Yaygın sorun giderme sorgularının listesi aşağıdadır.
Çalıştırılması 3 milisaniyeden uzun süren işlemleri sorgulama
Süresi 3 milisaniyeden uzun olan işlemleri bulun.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
İşlem çalıştıran kullanıcı aracıları için sorgu
Her işlemle ilişkili kullanıcı aracılarını bulun.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Uzun süre çalışan işlemler için sorgu
Çalışma zamanlarını beş saniyelik aralıklara ayırarak uzun süre çalıştırılan işlemleri bulun.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Veritabanı hesabı için ilk üç bölümdeki dengesizliği değerlendirmek için bölüm anahtarı istatistikleri alma
Fiziksel bölümler için yaygın istatistikler alarak dengesizliği ölçün.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Pahalı sorgular için istek ücretlerini alma
En büyük sorgular için istek ücretini (RU olarak) ölçün.
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
En çok RU/sn alan işlemleri bulma
İşlemleri kullandıkları RU/sn miktarına göre sıralayın.
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/sn'den fazla tüketen tüm sorguları alma
Temel tutardan daha fazla RU/sn tüketen sorguları bulun.
Bu sorgu ve QueryRunTimeStatistics
verileriyle DataPlaneRequests
birleşir.
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
Sorgunun istek ücretlerini ve yürütme süresini alma
Belirli bir sorgu için hem istek ücreti hem de süre istatistiklerini alın.
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)
Farklı işlemler için dağıtımı alma
İşlemleri kaynak dağıtımına göre gruplandırın.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Bir bölümün tüketmiş olduğu en yüksek aktarım hızını alma
Fiziksel bölüm için en yüksek aktarım hızını elde edin.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Saniye başına RU/sn bölüm anahtarları tüketimi hakkında bilgi alma
Bölüm anahtarı başına saniye başına ru/sn tüketimini ölçün.
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
Belirli bir bölüm anahtarı için istek ücreti alma
Bölüm anahtarı başına ölçüm isteği ücreti.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Belirli bir dönemde en çok RU/sn tüketilen en üst bölüm anahtarlarını alma
Bölüm anahtarlarını bir zaman penceresi içinde istek birimi tüketimine göre sıralayın.
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
Depolama boyutu 8 GB'tan büyük olan bölüm anahtarları için günlükleri alma
Bölüm anahtarı başına depolama boyutuna göre filtrelenmiş bölüm anahtarları için günlükleri bulun.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
İşlemler, istek ücreti veya yanıtın uzunluğu için P99 veya P50 gecikme süreleri alma
Için performansı ölçme; işlem gecikmesi, RU/sn kullanımı ve yanıt uzunluğu.
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)
Kontrol düzlemi günlüklerini alma
kullanarak ControlPlaneRequests
kontrol düzlemi uzun alın.
İpucu
Anahtar tabanlı meta veri yazma erişimini devre dışı bırakma bölümünde açıklanan bayrağı açma ve işlemleri Azure PowerShell, Azure CLI veya Azure Resource Manager kullanarak yürütmeyi unutmayın.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Sonraki adımlar
- Azure Cosmos DB için tanılama ayarları oluşturma hakkında daha fazla bilgi için bkz . Tanılama ayarları oluşturma.
- Azure portalı, CLI veya PowerShell kullanarak tanılama ayarı oluşturma hakkında ayrıntılı bilgi için bkz . Azure'da platform günlüklerini ve ölçümlerini toplamak için tanılama ayarı oluşturma.