Memecahkan masalah dengan kueri diagnostik
BERLAKU UNTUK: NoSQL MongoDB Cassandra Gremlin Meja
Dalam artikel ini, kami membahas cara menulis kueri sederhana untuk membantu memecahkan masalah dengan akun Azure Cosmos DB Anda menggunakan log diagnostik yang dikirim ke tabel AzureDiagnostics (warisan) dan Khusus sumber daya (pratinjau).
Untuk tabel Diagnostik Azure, semua data ditulis ke dalam satu tabel dan pengguna perlu menentukan kategori mana yang ingin mereka kueri.
Untuk tabel khusus sumber daya, data ditulis ke dalam tabel individual untuk setiap kategori sumber daya (tidak tersedia untuk API tabel). Kami merekomendasikan mode ini karena membuatnya jauh lebih mudah untuk bekerja dengan data, memberikan penemuan skema yang lebih baik, dan meningkatkan kinerja di latensi pencahayaan dan waktu kueri.
Kueri umum
Berikut adalah daftar kueri pemecahan masalah umum.
Kueri untuk operasi yang membutuhkan waktu lebih dari 3 milidetik untuk dijalankan
Temukan operasi yang memiliki durasi lebih besar dari 3 milidetik.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
Kueri untuk agen pengguna yang menjalankan operasi
Temukan agen pengguna yang terkait dengan setiap operasi.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Kueri untuk operasi yang berjalan lama
Temukan operasi yang berjalan untuk waktu yang lama dengan mengikat runtime mereka ke dalam interval lima detik.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Dapatkan statistik kunci partisi untuk mengevaluasi ke condong di tiga partisi teratas untuk akun database
Ukur condong dengan mendapatkan statistik umum untuk partisi fisik.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Dapatkan biaya permintaan untuk kueri mahal
Ukur biaya permintaan (dalam RU) untuk kueri terbesar.
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
Temukan operasi mana yang paling banyak mengambil RU/dtk
Urutkan operasi menurut jumlah RU/s yang mereka gunakan.
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)
Mendapatkan semua kueri yang mengkonsumsi lebih dari 100 RU/dtk
Temukan kueri yang mengonsumsi lebih banyak RU/dtk daripada jumlah garis besar.
Kueri ini bergabung dengan data dari DataPlaneRequests
dan 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
Mendapatkan biaya permintaan dan durasi eksekusi kueri
Dapatkan statistik dalam biaya permintaan dan durasi untuk kueri tertentu.
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)
Mendapatkan distribusi untuk operasi yang berbeda
Operasi grup berdasarkan distribusi sumber daya.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Dapatkan throughput maksimum yang telah dikonsumsi partisi
Dapatkan throughput maksimum untuk partisi fisik.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Mendapatkan informasi tentang konsumsi RU/dtk kunci partisi per detik
Ukur konsumsi RU/dtk per detik per kunci partisi.
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
Mendapatkan biaya permintaan untuk kunci partisi tertentu
Mengukur biaya permintaan per kunci partisi.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Dapatkan kunci partisi teratas dengan sebagian besar RU/dtk yang digunakan dalam periode tertentu
Urutkan kunci partisi berdasarkan konsumsi unit permintaan dalam jendela waktu.
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
Mendapatkan log untuk kunci partisi yang ukuran penyimpanannya lebih besar dari 8 GB
Temukan log untuk kunci partisi yang difilter berdasarkan ukuran penyimpanan per kunci partisi.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
Dapatkan latensi P99 atau P50 untuk operasi, biaya permintaan, atau lamanya respons
Mengukur performa untuk; latensi operasi, penggunaan RU/dtk, dan panjang respons.
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)
Mendapatkan log sarana kontrol
Dapatkan sarana kontrol lama menggunakan ControlPlaneRequests
.
Tip
Ingatlah untuk mengaktifkan bendera yang dijelaskan dalam Menonaktifkan akses tulis metadata berbasis kunci, dan jalankan operasi dengan menggunakan Azure PowerShell, Azure CLI, atau Azure Resource Manager.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Langkah berikutnya
- Untuk informasi selengkapnya tentang cara membuat pengaturan diagnostik untuk Azure Cosmos DB, lihat Membuat pengaturan Diagnostik.
- Untuk informasi terperinci tentang cara membuat pengaturan diagnostik dengan menggunakan portal Azure, CLI, atau PowerShell, lihat membuat pengaturan diagnostik untuk mengumpulkan log dan metrik platform di Azure.