Pantau dan debug dengan wawasan di Azure Cosmos DB
BERLAKU UNTUK: NoSQL MongoDB Cassandra Gremlin Meja
Azure Cosmos DB menyediakan wawasan untuk throughput, penyimpanan, konsistensi, ketersediaan, dan latensi. Portal Azure menyediakan tampilan agregat metrik ini. Anda juga dapat melihat metrik Azure Cosmos DB dari Azure Monitor API. Nilai dimensi untuk metrik seperti nama kontainer bersifat case-insensitive. Oleh karena itu, Anda perlu menggunakan perbandingan yang tidak peka huruf besar/kecil saat melakukan perbandingan string pada nilai dimensi ini. Untuk mempelajari cara melihat metrik dari Azure monitor, lihat Memantau Azure Cosmos DB.
Artikel ini membahas kasus penggunaan umum dan cara wawasan Azure Cosmos DB dapat digunakan untuk menganalisis dan men-debug masalah ini. Secara default, wawasan metrik dikumpulkan setiap lima menit dan disimpan selama tujuh hari.
Bagian berikut menjelaskan skenario umum saat Anda dapat menggunakan metrik Azure Cosmos DB.
Catatan
Saat memfilter menurut database atau koleksi dalam metrik, ada kemungkinan Anda mungkin melihat "__Empty" atau "<Kosong>" sebagai resourceName. Ini karena data metrik sedang dikumpulkan pada tingkat akun untuk permintaan tertentu tersebut. Oleh karena itu, tidak ada database atau koleksi terkait sebagai nilai metrik.
Untuk memulai, buka portal Azure dan navigasikan ke panel Wawasan. Dari panel ini, buka tab Permintaan . Tab Permintaan memperlihatkan bagan dengan total permintaan yang disegmentasi oleh kode status dan jenis operasi. Untuk informasi selengkapnya tentang kode status HTTP, lihat Kode status HTTP untuk Azure Cosmos DB.
Kode status kesalahan yang paling umum adalah 429 (pembatasan kecepatan). Kesalahan ini berarti bahwa permintaan ke Azure Cosmos DB lebih dari throughput yang disediakan. Solusi paling umum untuk masalah ini adalah meningkatkan RU untuk koleksi yang ditentukan. Untuk informasi selengkapnya, lihat Pengantar throughput yang disediakan di Azure Cosmos DB
Memiliki kardinalitas kunci partisi yang baik sangat penting untuk aplikasi apa pun yang dapat diskalakan. Untuk menentukan distribusi throughput kontainer yang dipartisi yang dikelompokkan berdasarkan ID rentang kunci partisi, buka panel Wawasan. Buka tab Throughput . Konsumsi RU/dtk yang dinormalisasi di berbagai rentang kunci partisi diperlihatkan dalam bagan.
Dengan bantuan bagan ini, Anda dapat mengidentifikasi apakah ada partisi panas. PartitionKeyRangeIDs sesuai dengan partisi fisik. Metrik Konsumsi RU yang Dinormalisasi adalah nilai antara 0% dan 100% yang membantu mengukur pemanfaatan throughput yang disediakan pada database atau kontainer. Distribusi throughput yang tidak merata dapat menyebabkan partisi panas , yang dapat mengakibatkan permintaan yang dibatasi dan mungkin memerlukan partisi ulang. Setelah mengidentifikasi kunci partisi mana yang menyebabkan ke condong dalam distribusi, Anda mungkin harus mempartisi ulang kontainer Anda dengan kunci partisi yang lebih terdistribusi. Untuk informasi selengkapnya tentang pemartisian di Azure Cosmos DB, lihat Pemartisian dan penskalaan horizontal di Azure Cosmos DB.
Penting untuk menentukan distribusi penyimpanan dari setiap kontainer yang dipartisi berdasarkan penggunaan data, penggunaan indeks, dan penggunaan dokumen. Anda dapat meminimalkan penggunaan indeks, memaksimalkan penggunaan data, dan mengoptimalkan kueri Anda. Untuk mendapatkan data ini, navigasikan ke panel Wawasan dan buka tab Penyimpanan .
Di Azure Cosmos DB, total penyimpanan yang digunakan adalah kombinasi dari ukuran data dan ukuran indeks. Biasanya, ukuran indeks adalah bagian kecil dari ukuran data. Untuk mempelajari selengkapnya, lihat artikel ukuran Indeks. Di panel Metrik di portal Azure, tab Penyimpanan menampilkan perincian konsumsi penyimpanan berdasarkan data dan indeks.
// Measure the document size usage (which includes the index size)
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);
Jika ingin menghemat ruang indeks, Anda dapat menyesuaikan kebijakan pengindeksan.
Dalam API untuk NoSQL SDK, Azure Cosmos DB menyediakan statistik eksekusi kueri.
IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
"SELECT * FROM c WHERE c.city = 'Seattle'",
new FeedOptions
{
PopulateQueryMetrics = true,
MaxItemCount = -1,
MaxDegreeOfParallelism = -1,
EnableCrossPartitionQuery = true
}).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();
// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;
QueryMetrics menyediakan detail tentang berapa lama setiap komponen kueri dijalankan. Akar penyebab paling umum untuk kueri yang berjalan lama adalah pemindaian, yang berarti kueri tidak dapat menerapkan indeks. Masalah ini dapat diatasi dengan kondisi filter yang lebih baik.
Azure Cosmos DB menerapkan batasan jumlah permintaan metadata yang dapat dibuat selama interval 5 menit berturut-turut. Permintaan sarana kontrol yang melampaui batas ini mungkin mengalami pembatasan. Permintaan metadata mungkin dalam beberapa kasus, mengonsumsi throughput terhadap master partition
dalam akun yang berisi semua metadata akun. Permintaan sarana kontrol yang melampaui jumlah throughput akan mengalami pembatasan laju (429).
Untuk memulai, buka portal Azure dan navigasikan ke panel Wawasan. Dari panel ini, buka tab Sistem . Tab Sistem memperlihatkan dua bagan. Yang menunjukkan semua permintaan metadata untuk akun. Yang kedua menunjukkan metadata meminta konsumsi throughput dari akun master partition
yang menyimpan metadata akun.
Grafik Permintaan Metadata menurut Kode Status di atas mengagregasi permintaan pada peningkatan granularitas yang lebih besar saat Anda meningkatkan Rentang Waktu. Rentang Waktu terbesar yang dapat Anda gunakan untuk bin waktu 5 menit adalah 4 jam. Untuk memantau permintaan metadata selama rentang waktu yang lebih besar dengan granularitas tertentu, gunakan Metrik Azure. Buat bagan baru dan pilih Metadata meminta metrik. Di sudut kanan atas pilih 5 menit untuk Granularitas waktu seperti yang terlihat di bawah ini. Metrik juga memungkinkan pengguna membuat Pemberitahuan di dalamnya yang membuatnya lebih berguna daripada Insight.
Anda mungkin ingin mempelajari selengkapnya tentang meningkatkan performa database dengan membaca artikel berikut: