PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pemantauan Database PostgreSQL:Kiat untuk Apa yang Harus Dipantau

Setelah infrastruktur database Anda aktif dan berjalan, Anda harus mengawasi apa yang terjadi. Pemantauan adalah suatu keharusan jika Anda ingin memastikan semuanya berjalan dengan baik atau jika Anda mungkin perlu mengubah sesuatu.

Untuk setiap teknologi database ada beberapa hal yang harus dipantau. Beberapa di antaranya khusus untuk mesin database atau vendor atau bahkan versi spesifik yang Anda gunakan.

Di blog ini, kita akan melihat apa yang perlu Anda pantau di lingkungan PostgreSQL.

Apa yang Harus Dipantau di PostgreSQL

Saat memantau klaster atau simpul basis data, ada dua hal utama yang harus diperhatikan:sistem operasi dan basis data itu sendiri. Anda perlu menentukan metrik mana yang akan Anda pantau dari kedua sisi dan bagaimana Anda akan melakukannya. Anda harus selalu memantau metrik dalam konteks sistem Anda, dan Anda harus mencari perubahan pada pola perilaku.

Dalam kebanyakan kasus, Anda perlu menggunakan beberapa alat (karena hampir tidak mungkin menemukannya untuk mencakup semua metrik yang diinginkan.) 

Perhatikan bahwa jika salah satu metrik Anda terpengaruh, metrik tersebut juga dapat memengaruhi yang lain, sehingga pemecahan masalah menjadi lebih rumit. Memiliki sistem pemantauan dan peringatan yang baik penting untuk membuat tugas ini sesederhana mungkin.

Pemantauan Sistem Operasi

Satu hal penting (yang umum untuk semua mesin basis data dan bahkan semua sistem) adalah untuk memantau perilaku Sistem Operasi. Berikut beberapa poin yang perlu diperiksa di sini.

Penggunaan CPU

Persentase penggunaan CPU yang berlebihan dapat menjadi masalah jika perilakunya tidak seperti biasanya. Dalam hal ini, penting untuk mengidentifikasi proses/proses yang menghasilkan masalah ini. Jika masalahnya adalah proses database, Anda perlu memeriksa apa yang terjadi di dalam database.

Memori RAM atau Penggunaan SWAP

Jika Anda melihat nilai tinggi untuk metrik ini dan tidak ada yang berubah di sistem Anda, Anda mungkin perlu memeriksa konfigurasi database Anda. Parameter seperti shared_buffers dan work_mem dapat memengaruhi ini secara langsung karena parameter tersebut menentukan jumlah memori yang dapat digunakan untuk database PostgreSQL.

Penggunaan Disk

Peningkatan abnormal dalam penggunaan ruang disk atau konsumsi akses disk yang berlebihan adalah hal penting untuk dipantau karena Anda dapat memiliki sejumlah besar kesalahan yang dicatat dalam file log PostgreSQL atau konfigurasi cache yang buruk yang dapat menghasilkan konsumsi akses disk yang penting daripada menggunakan memori untuk memproses kueri.

Memuat Rata-Rata

Ini terkait dengan tiga poin yang disebutkan di atas. Rata-rata beban yang tinggi dapat dihasilkan oleh penggunaan CPU, RAM, atau disk yang berlebihan.

Jaringan

Masalah jaringan dapat memengaruhi semua sistem karena aplikasi tidak dapat terhubung (atau menghubungkan paket yang hilang) ke database, jadi ini adalah metrik yang penting untuk dipantau. Anda dapat memantau latensi atau kehilangan paket, dan masalah utamanya dapat berupa saturasi jaringan, masalah perangkat keras, atau hanya konfigurasi jaringan yang buruk.

Pemantauan Database PostgreSQL

Memantau database PostgreSQL Anda tidak hanya penting untuk melihat apakah Anda mengalami masalah, tetapi juga untuk mengetahui apakah Anda perlu mengubah sesuatu untuk meningkatkan kinerja database Anda, itu mungkin salah satu yang paling penting hal-hal yang harus dipantau dalam database. Mari kita lihat beberapa metrik yang penting untuk ini.

Pemantauan Kueri

Secara default, PostgreSQL dikonfigurasi dengan mempertimbangkan kompatibilitas dan stabilitas, jadi Anda perlu mengetahui kueri dan polanya, dan mengonfigurasi database Anda bergantung pada lalu lintas yang Anda miliki. Di sini, Anda dapat menggunakan perintah EXPLAIN untuk memeriksa rencana kueri untuk kueri tertentu, dan Anda juga dapat memantau jumlah SELECT, INSERT, UPDATE, atau DELETEs pada setiap node. Jika Anda memiliki kueri yang panjang atau banyak kueri yang berjalan pada saat yang sama, itu bisa menjadi masalah bagi semua sistem.

Memantau Sesi Aktif

Anda juga harus memantau jumlah sesi aktif. Jika Anda mendekati batas, Anda perlu memeriksa apakah ada yang salah atau jika Anda hanya perlu menaikkan nilai max_connections. Perbedaan jumlah tersebut dapat berupa penambahan atau pengurangan koneksi. Penggunaan yang buruk dari penyatuan koneksi, penguncian, atau masalah jaringan adalah masalah paling umum yang terkait dengan jumlah koneksi.

Pengunci Basis Data

Jika Anda memiliki kueri yang menunggu kueri lain, Anda perlu memeriksa apakah kueri lain tersebut merupakan proses normal atau sesuatu yang baru. Dalam beberapa kasus, jika seseorang membuat pembaruan pada tabel besar, misalnya, tindakan ini dapat memengaruhi perilaku normal database Anda, menghasilkan sejumlah besar kunci.

Memantau Replikasi

Metrik utama untuk memantau replikasi adalah lag dan status replikasi. Masalah yang paling umum adalah masalah jaringan, masalah sumber daya perangkat keras, atau masalah dimensi. Jika Anda menghadapi masalah replikasi, Anda perlu mengetahuinya secepatnya karena Anda harus memperbaikinya untuk memastikan lingkungan ketersediaan tinggi.

Memantau Cadangan

Menghindari kehilangan data adalah salah satu tugas dasar DBA, jadi Anda tidak hanya perlu mengambil cadangan, Anda harus tahu apakah pencadangan telah selesai, dan apakah itu dapat digunakan. Biasanya, poin terakhir ini tidak diperhitungkan, tetapi mungkin ini adalah pemeriksaan terpenting dalam proses pencadangan.

Memantau Log Basis Data

Anda harus memantau log database untuk kesalahan seperti FATAL atau kebuntuan, atau bahkan untuk kesalahan umum seperti masalah autentikasi atau kueri yang berjalan lama. Sebagian besar kesalahan ditulis dalam file log dengan informasi terperinci yang berguna untuk memperbaikinya.

Dampak Pemantauan pada Kinerja Database PostgreSQL

Meskipun pemantauan adalah suatu keharusan, biasanya tidak gratis. Selalu ada biaya pada kinerja database, tergantung pada seberapa banyak Anda memantau, jadi Anda harus menghindari pemantauan hal-hal yang tidak akan Anda gunakan.

Secara umum, ada dua cara untuk memantau database Anda, dari log atau dari sisi database dengan melakukan kueri.

Dalam hal log, untuk dapat menggunakannya, Anda harus memiliki tingkat logging yang tinggi, yang menghasilkan akses disk yang tinggi dan dapat mempengaruhi kinerja database Anda.

Untuk mode kueri, setiap koneksi ke database menggunakan sumber daya, jadi bergantung pada aktivitas database Anda dan sumber daya yang ditetapkan, hal itu dapat memengaruhi kinerja juga.

Alat Pemantauan PostgreSQL

Ada beberapa opsi alat untuk memantau database Anda. Ini bisa berupa alat PostgreSQL bawaan, seperti ekstensi, atau alat eksternal. Mari kita lihat beberapa contoh alat ini.

Ekstensi

  • Pg_stat_statements :Ekstensi ini akan membantu Anda mengetahui profil kueri database Anda. Ini melacak semua kueri yang dieksekusi dan menyimpan banyak informasi berguna dalam tabel yang disebut pg_stat_statements. Dengan membuat kueri tabel ini, Anda bisa mendapatkan kueri apa yang dijalankan dalam sistem, berapa kali kueri dijalankan, dan berapa banyak waktu yang digunakan, di antara informasi lainnya.
  • Pgbadger :Ini adalah perangkat lunak yang melakukan analisis log PostgreSQL dan menampilkannya dalam file HTML. Ini membantu Anda memahami perilaku database Anda dan mengidentifikasi kueri mana yang perlu dioptimalkan.
  • Pgstattuple :Hal ini dapat menghasilkan statistik untuk tabel dan indeks, menunjukkan berapa banyak ruang yang digunakan oleh setiap tabel dan indeks, dikonsumsi oleh tupel hidup, tupel dihapus atau berapa banyak ruang yang tidak terpakai tersedia di setiap relasi.
  • Pg_buffercache :Dengan ini, Anda dapat memeriksa apa yang terjadi di cache buffer bersama secara real-time, menunjukkan berapa banyak halaman yang saat ini disimpan dalam cache.

Alat Pemantauan Eksternal

  • ClusterControl :Ini adalah sistem manajemen dan pemantauan yang membantu menyebarkan, mengelola, memantau, dan menskalakan basis data Anda dari antarmuka yang ramah. ClusterControl memiliki dukungan untuk teknologi database open-source teratas dan Anda dapat mengotomatiskan banyak tugas database yang harus Anda lakukan secara rutin seperti menambahkan dan menskalakan node baru, menjalankan pencadangan dan pemulihan, dan banyak lagi.
  • Nagios :Ini adalah sistem Open Source dan aplikasi pemantauan jaringan. Ini memonitor host atau layanan, dan mengelola peringatan untuk negara bagian yang berbeda. Dengan alat ini, Anda dapat memantau layanan jaringan, sumber daya host, dan banyak lagi. Untuk memantau PostgreSQL, Anda dapat menggunakan beberapa plugin atau Anda dapat membuat skrip sendiri untuk memeriksa database Anda.
  • Zabbix :Ini adalah perangkat lunak yang dapat memantau jaringan dan server. Ini menggunakan mekanisme pemberitahuan fleksibel yang memungkinkan pengguna untuk mengonfigurasi peringatan melalui email. Ini juga menawarkan laporan dan visualisasi data berdasarkan data yang disimpan. Semua laporan dan statistik Zabbix, serta parameter konfigurasi, diakses melalui antarmuka web.

Dasbor

Visibilitas berguna untuk deteksi masalah dengan cepat. Ini jelas merupakan tugas yang lebih memakan waktu untuk membaca output perintah daripada hanya menonton grafik. Jadi, penggunaan dasbor bisa menjadi pembeda antara mendeteksi masalah sekarang atau dalam 15 menit ke depan, yang pasti waktu bisa sangat penting bagi perusahaan. Untuk tugas ini, alat seperti PMM atau Vividcortex, antara lain, dapat menjadi kunci untuk menambahkan visibilitas ke sistem pemantauan database Anda.

Percona Monitoring and Management (PMM): Ini adalah platform sumber terbuka untuk mengelola dan memantau kinerja database Anda. Ini menyediakan analisis berbasis waktu menyeluruh untuk server MySQL, MariaDB, MongoDB, dan PostgreSQL untuk memastikan bahwa data Anda bekerja seefisien mungkin.

VividCortex: Ini adalah platform yang dihosting cloud yang menyediakan pemantauan kinerja basis data yang mendalam. Ini menawarkan visibilitas lengkap ke database open source terkemuka termasuk MySQL, PostgreSQL, AWS Aurora, MongoDB, dan Redis.

Peringatan

Hanya memantau sistem tidak masuk akal jika Anda tidak menerima pemberitahuan tentang setiap masalah. Tanpa sistem peringatan, Anda harus pergi ke alat pemantauan untuk melihat apakah semuanya baik-baik saja, dan mungkin Anda mengalami masalah besar sejak beberapa jam yang lalu. Pekerjaan peringatan ini dapat dilakukan dengan menggunakan peringatan email, peringatan teks, atau integrasi alat lain seperti slack.

Sangat sulit untuk menemukan beberapa alat untuk memantau semua metrik yang diperlukan untuk PostgreSQL, secara umum, Anda perlu menggunakan lebih dari satu dan bahkan beberapa skrip perlu dibuat. Salah satu cara untuk memusatkan tugas pemantauan dan peringatan adalah dengan menggunakan ClusterControl, yang memberi Anda fitur seperti manajemen pencadangan, pemantauan dan peringatan, penerapan dan penskalaan, pemulihan otomatis, dan fitur yang lebih penting untuk membantu Anda mengelola database. Semua fitur ini pada sistem yang sama.

Memantau Database PostgreSQL Anda dengan ClusterControl

ClusterControl memungkinkan Anda untuk memantau server Anda secara real-time. Ini memiliki seperangkat dasbor yang telah ditentukan sebelumnya untuk Anda, untuk menganalisis beberapa metrik yang paling umum.

Ini memungkinkan Anda untuk menyesuaikan grafik yang tersedia di cluster, dan Anda dapat memungkinkan pemantauan berbasis agen untuk menghasilkan dasbor yang lebih detail.

Anda juga dapat membuat lansiran, yang memberi tahu Anda tentang peristiwa di klaster Anda, atau integrasikan dengan layanan yang berbeda seperti PagerDuty atau Slack.

Selain itu, Anda dapat memeriksa bagian monitor kueri, di mana Anda dapat menemukan kueri teratas, kueri yang berjalan, outlier kueri, dan statistik kueri.

Dengan fitur ini, Anda dapat melihat bagaimana database PostgreSQL Anda berjalan.

Untuk manajemen pencadangan, ClusterControl memusatkannya untuk melindungi, mengamankan, dan memulihkan data Anda, dan dengan fitur pencadangan verifikasi, Anda dapat mengonfirmasi apakah pencadangan dapat digunakan.

Pekerjaan pencadangan verifikasi ini akan memulihkan cadangan di host mandiri yang terpisah, jadi Anda dapat memastikan bahwa pencadangan berfungsi.

Pemantauan dengan Baris Perintah ClusterControl

Untuk skrip dan tugas otomatisasi, atau bahkan jika Anda lebih suka baris perintah, ClusterControl memiliki alat s9s. Ini adalah alat baris perintah untuk mengelola cluster database Anda.

Daftar Cluster

Daftar Node

Anda dapat melakukan semua tugas (dan bahkan lebih banyak lagi) dari UI ClusterControl , dan Anda dapat mengintegrasikan fitur ini dengan beberapa alat eksternal seperti slack, untuk mengelolanya dari sana.

Kesimpulan

Di blog ini, kami menyebutkan beberapa metrik penting untuk dipantau di lingkungan PostgreSQL Anda, dan beberapa alat untuk membuat hidup Anda lebih mudah dengan mengontrol sistem Anda. Anda juga dapat melihat cara menggunakan ClusterControl untuk tugas ini.

Seperti yang Anda lihat, pemantauan mutlak diperlukan, dan cara terbaik untuk melakukannya bergantung pada infrastruktur dan sistem itu sendiri. Anda harus mencapai keseimbangan antara apa yang perlu Anda pantau dan bagaimana hal itu memengaruhi kinerja database Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah Hari Julian menjadi Tanggal di PostgreSQL

  2. Menggunakan pt-pg-summary Percona Toolkit untuk PostgreSQL

  3. Menampilkan gambar di Laporan menggunakan PostgreSql

  4. Tidak dapat terhubung ke Postgres melalui PHP tetapi dapat terhubung dari baris perintah dan PgAdmin di mesin yang berbeda

  5. Gagal memuat modul sql ke dalam cluster database selama Instalasi PostgreSQL