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 peka huruf besar/kecil. Jadi, Anda harus menggunakan perbandingan peka huruf besar/kecil saat melakukan perbandingan string pada nilai dimensi ini. Untuk mempelajari cara menampilkan metrik dari Azure Monitor, lihat artikel Mendapatkan metrik dari Azure Monitor.

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.

Menampilkan wawasan dari portal Microsoft Azure

  1. Masuk ke portal Microsoft Azure dan buka akun Azure Cosmos DB Anda.

  2. Anda dapat melihat metrik akun Anda dari panelMetrik atau panel Wawasan.

    • Metrik: Panel ini menyediakan metrik numerik yang dikumpulkan secara berkala dan menjelaskan beberapa aspek sistem pada waktu tertentu. Misalnya, Anda dapat menampilkan dan memantau metrik latensi sisi server, pemakaian metrik unit permintaan yang dinormalisasi, dll.

    • Wawasan: Panel ini memberikan pengalaman pemantauan yang disesuaikan untuk Azure Cosmos DB. Panel ini menggunakan metrik dan log yang sama yang dikumpulkan di Azure Monitor dan menampilkan tampilan agregat untuk akun Anda.

  3. Buka Panel Wawasan. Secara default, panel Insight menampilkan metrik throughput, permintaan, penyimpanan, ketersediaan, latensi, sistem, dan manajemen akun untuk setiap kontainer di akun Anda. Anda dapat memilih Rentang Waktu, Database, dan Kontainer jika ingin menampilkan wawasan. Tab Gambaran Umum menunjukkan penggunaan RU, penggunaan data, penggunaan indeks, permintaan yang dibatasi, dan konsumsi RU yang dinormalisasi untuk database dan kontainer yang dipilih.

    Metrik performa Azure Cosmos DB dalam portal Azure

  4. Metrik berikut ini tersedia dari panel Wawasan:

    • Throughput - Tab ini menunjukkan jumlah total unit permintaan yang digunakan atau gagal (429 kode respons) karena throughput atau kapasitas penyimpanan yang disediakan untuk kontainer telah melebihi batas.

    • Permintaan - Tab ini menampilkan jumlah total permintaan yang diproses berdasarkan kode status, jenis operasi, dan jumlah permintaan yang gagal (kode respons 429). Permintaan gagal ketika throughput atau kapasitas penyimpanan yang disediakan untuk kontainer telah melebihi batas.

    • Penyimpanan - Tab ini menunjukkan ukuran penggunaan data dan indeks selama periode waktu yang dipilih.

    • Ketersediaan - - Tab ini menunjukkan persentase permintaan yang berhasil selama total permintaan per jam. Tingkat keberhasilan ditentukan oleh Azure Cosmos DB SLA.

    • Latensi - - Tab ini menunjukkan latensi baca dan tulis yang diamati oleh Azure Cosmos DB di wilayah tempat akun Anda beroperasi. Anda dapat memvisualisasikan latensi di seluruh wilayah untuk akun yang direplikasi secara geografis. Anda juga dapat melihat latensi sisi server dengan operasi yang berbeda. Metrik ini tidak mewakili latensi permintaan end-to-end.

    • Sistem - Tab ini menunjukkan berapa banyak permintaan metadata yang dilayani oleh partisi utama. Metrik ini juga membantu mengidentifikasi permintaan yang dibatasi.

    • Manajemen Akun - Tab ini memperlihatkan metrik untuk aktivitas manajemen akun seperti pembuatan akun, penghapusan, pembaruan kunci, pengaturan jaringan, dan replikasi.

Bagian berikut menjelaskan skenario umum saat Anda dapat menggunakan metrik Azure Cosmos DB.

Memahami berapa banyak permintaan yang berhasil atau menyebabkan kesalahan

Untuk memulai, buka portal Microsoft Azure dan buka bilah Wawasan. Dari bilah ini, buka tab Permintaan yang memperlihatkan bagan dengan total permintaan yang disegmentasi berdasarkan 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.

Jumlah permintaan per menit

Menentukan konsumsi throughput dengan rentang kunci partisi

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 yang dinormalkan pada rentang kunci partisi berbeda ditunjukkan pada bagan.

Konsumsi throughput yang dinormalisasi dengan ID rentang kunci partisi

Dengan bantuan bagan ini, Anda dapat mengidentifikasi apakah ada partisi yang panas. Distribusi throughput yang tidak merata dapat menyebabkan partisi panas, yang dapat mengakibatkan permintaan terbatas dan mungkin memerlukan pemartisian ulang. Setelah mengidentifikasi kunci partisi yang menyebabkan kecondongan distribusi, Anda mungkin harus mempartisi ulang kontainer dengan kunci partisi yang lebih terdistribusi. Untuk informasi selengkapnya tentang pemartisian di Azure Cosmos DB, lihat Partisi dan skala di Azure Cosmos DB.

Menentukan penggunaan data dan indeks

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 mendapat data ini, buka panel Wawasan dan buka tab Penyimpanan:

Konsumsi data, indeks, dan dokumen

Membandingkan ukuran data dengan ukuran indeks

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 bilah Metrik pada portal Microsoft Azure, tab Penyimpanan menampilkan rincian penggunaan 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.

Mendebug masalah kueri berjalan lambat

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 bahwa kueri tidak dapat memanfaatkan indeks. Masalah ini dapat diatasi dengan kondisi filter yang lebih baik.

Langkah berikutnya

Sekarang, Anda telah mempelajari cara memantau dan mendebug masalah menggunakan metrik yang disediakan di portal Microsoft Azure. Sebaiknya Anda mempelajari lebih lanjut cara meningkatkan performa database dengan membaca artikel berikut: