Meningkatkan kemampuan observasi menggunakan metrik pemantauan kustom

Pilih versi dokumentasi:

Anda dapat menggunakan metrik kustom di operator Kubernetes AlloyDB Omni untuk menentukan dan mengumpulkan metrik khusus aplikasi dengan menjalankan kueri SQL terhadap database Anda. Metrik kustom menggunakan Resource Kustom (CR) ObservabilityConfig untuk menentukan aturan pengumpulan metrik.

Mengonfigurasi metrik kustom menggunakan ObservabilityConfig

CR ObservabilityConfig terdiri dari dua bagian utama, dbClusterRefs dan customMetrics.

dbClusterRefs

Bagian ini berisi daftar referensi ke resource DBCluster yang diterapkan oleh konfigurasi ini. Setiap ObservabilityConfig harus menargetkan satu DBCluster dalam namespace yang sama.

customMetrics

Bagian ini menentukan konfigurasi inti untuk pengumpulan metrik kustom, termasuk batas resource dan definisi kueri.

Batas resource (resourceLimits)

Untuk melindungi database, sistem menerapkan batasan pada kueri kustom. Jika Anda tidak menentukan batas ini dalam manifes, sistem akan menggunakan nilai default yang tercantum dalam tabel berikut.

Parameter Deskripsi Default Maks Unit
workMemory Menentukan work_mem untuk koneksi database tertentu yang digunakan oleh agen pemantauan untuk mengumpulkan metrik ini. Setelan ini bersifat lokal untuk proses pengumpulan metrik dan tidak memengaruhi parameter work_mem global yang dikonfigurasi dalam spesifikasi DBCluster. 4MB T/A KB, MB (Default: KB)
maxParallelWorkers Menentukan max_parallel_workers_per_gather untuk koneksi database tertentu yang digunakan oleh agen pemantauan. Setel ke 0 untuk menonaktifkan eksekusi kueri paralel dan meminimalkan dampak CPU. Setelan ini bersifat lokal untuk proses pengumpulan metrik dan tidak memengaruhi konfigurasi database global. 0 T/A Bilangan bulat
statementTimeout Menentukan statement_timeout untuk koneksi database tertentu yang digunakan oleh agen pemantauan. Hal ini membatasi waktu maksimum yang diizinkan untuk menjalankan satu kueri metrik. Setelan ini bersifat lokal untuk proses pengumpulan metrik dan tidak memengaruhi konfigurasi database global. 2s 30s ms, s (Default: ms)

Definisi metrik kustom (definitions)

Setiap entri dalam daftar definitions menentukan kueri dan menjelaskan cara menafsirkan hasilnya.

  • metricGroup: nama unik (huruf kecil, angka, garis bawah) yang digunakan untuk penamaan metrik.
  • database: nama database target untuk kueri. Agen pemantauan membuat koneksi ke database tertentu ini untuk menjalankan kueri; oleh karena itu, skema yang dikueri harus ada di dalamnya.
  • query: pernyataan SQL SELECT yang valid. Hanya kueri SELECT yang diizinkan.
  • metrics: daftar yang memetakan kolom hasil SQL ke jenis Prometheus:
    • usage: label: menggunakan nilai kolom sebagai label Prometheus.
    • usage: gauge: mengekspor nilai sebagai metrik prometheus gauge.
    • usage: counter: mengekspor nilai sebagai metrik penghitung prometheus.

Keamanan dan izin

Operator AlloyDB Omni menggunakan pengguna alloydbmonitor untuk mengumpulkan metrik. Secara default, operator AlloyDB Omni membuat pengguna ini dengan atribut LOGIN dan memberikan peran pg_monitor di database postgres.

Saat Anda menambahkan metrik kustom, pastikan pengguna ini memiliki izin tambahan yang sesuai:

  • Tanggung jawab pengguna: administrator database harus memberikan hak istimewa SELECT secara manual kepada pengguna alloydbmonitor untuk tabel, tampilan, atau skema aplikasi tertentu yang digunakan dalam kueri kustom Anda.
  • Pemeriksaan keamanan hak tulis: untuk memastikan integritas sistem dan mencegah modifikasi data yang tidak disengaja, operator AlloyDB Omni melakukan pemeriksaan keamanan. Jika sistem menemukan bahwa pengguna alloydbmonitor memiliki hak akses tulis—misalnya, INSERT, UPDATE, dan DELETE—pada database target, sistem akan mencatat error dan menolak untuk mengumpulkan metrik kustom dari database tersebut.

Contoh pemberian izin

Untuk memberikan akses hanya baca ke semua tabel dalam skema public dari database bernama warehousedb, Anda harus menjalankan perintah berikut:

psql -h <var>DB_CLUSTER_ENDPOINT</var> -U <var>DB_ADMIN_USER</var> -d warehousedb
warehousedb=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO alloydbmonitor;

Contoh manifes

Contoh konfigurasi manifes berikut mengonfigurasi agen pemantauan untuk terhubung ke database postgres dan melacak statistik transaksi menggunakan tampilan sistem pg_stat_database.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: ObservabilityConfig
metadata:
  name: obs-metrics
spec:
  dbClusterRefs:
    - dbcluster-sample
  customMetrics:
    resourceLimits:
      workMemory: "4MB"
      maxParallelWorkers: 0
    definitions:
      - metricGroup: database
        database: "postgres"
        query: |
          SELECT
            curr_db, xact_commit, xact_rollback
          FROM pg_stat_database WHERE datname IS NOT NULL
        metrics:
          - name: curr_db
            desc: "Database name"
            usage: label
          - name: xact_commit
            desc: "Transactions committed"
            usage: counter
          - name: xact_rollback
            desc: "Transactions rolled back"
            usage: counter

Referensi metrik

Bagian ini mereferensikan metrik yang dihasilkan oleh fitur metrik kustom.

Output metrik yang dihasilkan

Sample manifest ini mengekspor metrik dalam format Prometheus berikut:

# HELP alloydb_omni_custom_database_xact_commit_total Transactions committed
# TYPE alloydb_omni_custom_database_xact_commit_total counter
alloydb_omni_custom_database_xact_commit_total{database="postgres",curr_db="testdb1",dbcluster="dbcluster-sample",dbcluster_type="Primary",dbinstance="n/a",dbinstance_type="n/a",dbnamespace="mc",dbnode="76d3-dbcluster-sample",dbnode_type="Primary"} 382069 1774388549568
# HELP alloydb_omni_custom_database_xact_rollback_total Transactions rolled back
# TYPE alloydb_omni_custom_database_xact_rollback_total counter
alloydb_omni_custom_database_xact_rollback_total{database="postgres",curr_db="testdb1",dbcluster="dbcluster-sample",dbcluster_type="Primary",dbinstance="n/a",dbinstance_type="n/a",dbnamespace="mc",dbnode="76d3-dbcluster-sample",dbnode_type="Primary"} 4364 1774388549568

Label standar

Setiap metrik kustom otomatis menyertakan label standar berikut: database, dbcluster, dbcluster_type, dbinstance, dbinstance_type, dbnamespace, dbnode, dan dbnode_type. Untuk mengetahui informasi selengkapnya tentang label ini, lihat Label metrik AlloyDB Omni

Metrik pengumpulan metrik

Metrik ini menunjukkan status setiap siklus pengumpulan metrik. Anda dapat menemukan pesan error mendetail, termasuk kueri spesifik mana yang mengalami waktu tunggu habis atau gagal, di log penampung agen pemantauan.

# HELP alloydb_omni_monitor_custom_metrics_errors_total Total number of errors encountered during execution of the custom query
# TYPE alloydb_omni_monitor_custom_metrics_errors_total counter
alloydb_omni_monitor_custom_metrics_errors_total{metricGroup="database",dbcluster="dbcluster-sample",dbnode="...",...} 0 1773703411350

Sebelum Anda menggunakan metrik kustom, pertimbangkan hal berikut:

  • Hanya pernyataan SELECT yang diizinkan. Sistem menolak pernyataan apa pun yang mencoba mengubah data. Jalankan dan verifikasi hasil dan performa kueri Anda secara manual sebelum menyertakannya dalam konfigurasi metrik kustom.
  • Rancang setiap kueri SQL untuk menampilkan jumlah baris hasil yang minimal. Sebaiknya Anda menentukan kurang dari lima baris dan satu baris. Hal ini memastikan bahwa metrik dan label yang berasal dari hasil kueri tidak menyebabkan kardinalitas yang berlebihan, yang dapat berdampak negatif terhadap performa sistem pemantauan.
  • Optimalkan kueri dan pastikan kueri tidak memerlukan resource yang berlebihan. Gunakan resourceLimits untuk mengamankan database Anda.
  • Setiap kueri harus menampilkan baris dengan kombinasi nilai label yang unik.