Memahami pemantauan performa di Firestore

Cloud Monitoring mengumpulkan metrik, peristiwa, dan metadata dari produk Google Cloud. Data yang dilaporkan di Dasbor penggunaan dan Penggunaan aturan keamanan juga dapat diakses melalui Cloud Monitoring untuk analisis yang lebih mendetail. Dengan Cloud Monitoring, Anda juga dapat menyiapkan dasbor kustom dan pemberitahuan penggunaan.

Dokumen ini memandu Anda menggunakan metrik, mempelajari dasbor metrik kustom, dan menetapkan pemberitahuan.

Resource yang Dimonitor

Resource yang dipantau di Cloud Monitoring mewakili entitas logis atau fisik, seperti virtual machine, database, atau aplikasi. Resource yang dipantau berisi kumpulan metrik unik yang dapat dijelajahi, dilaporkan melalui dasbor, atau digunakan untuk membuat pemberitahuan. Setiap resource juga memiliki kumpulan label resource, yaitu pasangan nilai kunci yang menyimpan informasi tambahan tentang resource. Label resource tersedia untuk semua metrik yang terkait dengan resource.

Dengan menggunakan Cloud Monitoring API, performa Firestore dipantau dengan resource berikut:

Resource Deskripsi Mode database yang didukung
firestore.googleapis.com/Database (direkomendasikan) Jenis resource yang dimonitor yang memberikan pengelompokan untuk project, location* , dan database_id . Label database_id akan menjadi (default) untuk database yang dibuat tanpa nama tertentu. Semua metrik yang didukung untuk kedua mode, kecuali metrik berikut yang tidak didukung untuk Firestore dalam mode Datastore:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
firestore_instance Jenis resource yang dipantau untuk project Firestore dan tidak memberikan perincian untuk database. Berlaku untuk Firestore Native
datastore_request Jenis resource yang dimonitor untuk project Datastore dan tidak memberikan perincian untuk database. Berlaku untuk kedua mode.

Metrik

Firestore tersedia dalam dua mode yang berbeda, Native Firestore dan Firestore dalam mode Datastore. Untuk perbandingan fitur antara kedua mode ini, lihat Memilih antara mode database.

Untuk mengetahui daftar lengkap metrik untuk kedua mode tersebut, lihat link berikut:

Metrik runtime layanan

Metrik serviceruntime memberikan ringkasan umum tentang traffic project. Metrik ini tersedia untuk sebagian besar Google Cloud API. Jenis resource yang dimonitor consumed_api berisi metrik umum ini. Metrik ini diambil sampelnya setiap 30 menit sehingga data menjadi halus.

Label resource penting untuk metrik serviceruntime adalah method. Label ini mewakili metode RPC yang mendasari yang dipanggil. Metode SDK yang Anda panggil mungkin tidak selalu diberi nama yang sama dengan metode RPC yang mendasarinya. Alasannya adalah karena SDK menyediakan abstraksi API tingkat tinggi. Namun, saat mencoba memahami cara aplikasi Anda berinteraksi dengan Firestore, penting untuk memahami metrik berdasarkan nama metode RPC.

Jika Anda perlu mengetahui metode RPC yang mendasari metode SDK tertentu, lihat dokumentasi API.

Gunakan metrik runtime layanan berikut untuk memantau database Anda.

api/request_count

Metrik ini memberikan jumlah permintaan yang selesai, di seluruh protokol(protokol permintaan, seperti http, gRPC, dll.), kode respons (kode respons HTTP), response_code_class (class kode respons, seperti 2xx, 4xx,dll.), dan grpc_status_code (kode respons gRPC numerik). Gunakan metrik ini untuk mengamati keseluruhan permintaan API dan menghitung rasio error.

Metrik api/request_count yang menampilkan kode 2xx.
Gambar 1. Metrik api/request_count (klik untuk memperbesar).

Pada gambar 1, permintaan yang menampilkan kode 2xx yang dikelompokkan menurut layanan dan metode dapat dilihat. Kode 2xx adalah kode status HTTP yang menunjukkan bahwa permintaan berhasil.

Metrik api/request_count yang menampilkan kode 2xx.
Gambar 2. Metrik api/request_count yang menampilkan kode 2xx (klik untuk memperbesar).

Pada gambar 2, commit yang dikelompokkan berdasarkan response_code dapat dilihat. Dalam contoh ini, kita hanya melihat respons HTTP 200 yang menyiratkan bahwa database dalam kondisi baik.

api/request_latencies

Metrik api/request_latencies memberikan distribusi latensi di semua permintaan yang telah selesai.

Firestore mencatat metrik dari komponen Layanan Firestore. Metrik latensi mencakup waktu saat Firestore menerima permintaan hingga waktu saat Firestore selesai mengirim respons, termasuk interaksi dengan lapisan penyimpanan. Oleh karena itu, latensi bolak-balik (rtt) antara klien dan layanan Firestore tidak disertakan dalam metrik ini.

api/request_latencies untuk menghitung distribusi latensi
Gambar 4. api/request_latencies untuk menghitung distribusi latensi.
api/request_sizes dan api/response_sizes

Metrik api/request_sizes dan api/response_sizes masing-masing memberikan insight tentang ukuran payload (dalam byte). Hal ini dapat berguna untuk memahami beban kerja tulis yang mengirim data dalam jumlah besar atau kueri yang terlalu luas, dan menampilkan payload besar.

Metrik api/request_sizes dan api/response_sizes
Gambar 5. Metrik api/request_sizes dan api/response_sizes (klik untuk memperbesar).

Pada gambar 5, peta panas untuk ukuran respons untuk metode RunQuery dapat dilihat. Kita dapat melihat bahwa ukurannya stabil, median 50 byte, dan secara keseluruhan antara 10 byte dan 100 byte. Perhatikan bahwa ukuran payload selalu diukur dalam byte yang tidak dikompresi, tidak termasuk overhead kontrol transmisi.

Mendokumentasikan metrik operasi

Firestore menyediakan jumlah operasi baca, tulis, dan hapus. Metrik tulis memberikan perincian antara operasi 'CREATE' dan 'UPDATE'. Metrik ini selaras dengan operasi CRUD.

Metrik berikut dapat digunakan untuk memahami apakah database Anda banyak dibaca atau banyak ditulis, dan rasio dokumen baru vs. dokumen yang dihapus.

  • document/delete_ops_count: Jumlah dokumen yang berhasil dihapus.
  • document/read_ops_count: Jumlah dokumen yang berhasil dibaca dari kueri atau pencarian.
  • document/write_ops_count: Jumlah dokumen yang berhasil ditulis.
Membuat rasio dokumen yang dibaca vs dokumen yang ditulis
Gambar 6. Buat rasio dokumen yang dibaca vs dokumen yang ditulis (klik untuk memperbesar).

Pada gambar 6, Anda dapat melihat cara membuat rasio yang menunjukkan rasio dokumen yang dibaca vs. dokumen yang ditulis. Dalam contoh ini, jumlah dokumen yang dibaca sekitar 6% lebih banyak daripada jumlah dokumen yang ditulis.

Mendokumentasikan metrik operasi

Metrik ini memberikan distribusi dalam byte ukuran payload untuk operasi baca (penelusuran dan kueri) dan operasi tulis ke database Firestore. Nilai tersebut mewakili ukuran total payload. Misalnya, hasil apa pun yang ditampilkan oleh kueri. Metrik ini mirip dengan metrik api/request_sizes dan api/response_sizes, dengan perbedaan utamanya adalah metrik operasi dokumen memberikan sampling yang lebih terperinci, tetapi perincian yang kurang terperinci.

Misalnya, metrik operasi dokumen menggunakan resource yang dipantau datastore_request sehingga tidak ada pengelompokan layanan atau metode.

  • entity/read_sizes: Distribusi ukuran dokumen yang dibaca.
  • entity/write_sizes: Distribusi ukuran dokumen tertulis.

Metrik indeks

Rasio tulis indeks dapat dibandingkan dengan metrik document/write_ops_count untuk memahami rasio fanout indeks.

  • index/write_count: Jumlah penulisan indeks.
kecepatan tulis indeks dibandingkan dengan kecepatan tulis dokumen
Gambar 7. Kecepatan penulisan indeks dibandingkan dengan kecepatan penulisan dokumen (klik untuk memperbesar).

Pada gambar 7, Anda dapat melihat bagaimana kecepatan tulis indeks dapat dibandingkan dengan kecepatan tulis dokumen. Dalam contoh ini, untuk setiap penulisan dokumen, ada sekitar 6 penulisan indeks, yang merupakan rasio fanout indeks yang relatif kecil.

Klien yang terhubung langsung ke database menggunakan Firebase SDK

Dua metrik pengukur tersedia untuk melacak aktivitas dari klien yang terhubung langsung ke database Firestore melalui Mobile SDK, Web SDK, atau keduanya. Metrik ini mencakup fungsi yang terkait dengan pemroses snapshot real-time, tempat perubahan yang relevan dalam database segera di-streaming kembali ke klien.

  • network/active_connections: Jumlah koneksi aktif pada titik waktu tertentu. Setiap klien web atau seluler memiliki satu koneksi.
  • network/snapshot_listeners: Jumlah pemroses snapshot yang saat ini terdaftar di semua klien yang terhubung. Mungkin ada beberapa koneksi per klien.

Anda dapat melihat metrik ini di tab Usage dalam database Firestore di Firebase console.

Metrik untuk melacak aktivitas klien yang terhubung ke Firestore
Gambar 8. Metrik untuk melacak aktivitas klien yang terhubung ke Firestore.

Metrik TTL

Metrik TTL tersedia untuk database Firestore Native dan Firestore dalam mode Datastore. Gunakan metrik ini untuk memantau efek kebijakan TTL yang diterapkan.

  • document/ttl_deletion_count: Jumlah total dokumen yang dihapus oleh layanan TTL.
Jumlah total dokumen yang dihapus oleh layanan TTL
Gambar 9. Jumlah total dokumen yang dihapus oleh layanan TTL (klik untuk memperbesar).

Pada gambar 9, Anda dapat melihat rasio dokumen yang dihapus setiap menit selama beberapa hari.

  • document/ttl_expiration_to_deletion_delays: Waktu yang berlalu antara saat dokumen dengan TTL habis masa berlakunya, dan saat dokumen benar-benar dihapus.
Waktu yang diperlukan dalam detik untuk Firestore menghapus dokumen dengan kebijakan TTL
Gambar 10. Waktu yang diperlukan dalam detik untuk Firestore menghapus dokumen dengan kebijakan TTL (klik untuk memperbesar).

Pada gambar 10, Anda dapat melihat bahwa metrik ini memberikan distribusi waktu dalam detik yang diperlukan Firestore untuk menghapus dokumen dengan kebijakan TTL. Perlu waktu kurang dari 0,5 detik untuk menghapus dokumen yang masa berlaku TTL-nya habis pada persentil ke-99. Hal ini menyiratkan bahwa sistem berfungsi normal. Firestore biasanya menghapus dokumen yang sudah tidak berlaku dalam waktu 24 jam, tetapi hal ini tidak dijamin. Jika Anda melihatnya memerlukan waktu lebih dari 24 jam, hubungi dukungan.

Langkah selanjutnya