Aracılığıyla paylaş


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 QueryRunTimeStatisticsverileriyle 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 ControlPlaneRequestskontrol 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.