Memantau PostgreSQL menggunakan Zabbix

Memantau PostgreSQL menggunakan Zabbix
Laporkan oleh Daria Vilkova untuk Zabbix Meetup Online

Saya ingin memperkenalkan Anda ke PostgreSQL dan alat pemantauan sistem operasi, yang sedang dikembangkan oleh perusahaan kami menggunakan Zabbix.

Kami telah memilih Zabbix sebagai alat pemantauan kami sejak lama karena merupakan platform sumber terbuka yang didukung oleh komunitas aktif yang sangat populer di Rusia.

Kami membuat agen aktif - Mamonsu, yang menyediakan pemantauan yang lebih fleksibel daripada alat standar yang diizinkan pada saat itu, dan memastikan pengumpulan metrik dan pengirimannya ke Server Zabbix. Di perusahaan kami, Mamonsu digunakan dalam audit.

Mamonsu

Mamonsu adalah agen aktif (Zabbix Trapper) untuk memantau PostgreSQL dan sistem operasi. Mamonsu (ditulis dengan Python) memungkinkan Anda mengonfigurasi PostgreSQL dan pengaturan pemantauan sistem operasi dalam lima menit.

Mamonsu memiliki alat tambahan:

  • mamonsu tune adalah perintah yang mengedit pengaturan di file konfigurasi PostgreSQL untuk mesin tempat agen Mamonsu diinstal.
  • laporan mamonsu adalah perintah yang menghasilkan jawaban tentang sistem operasi dan PostgreSQL.

Mamonsu diinstal di server DBMS, mengumpulkan informasi, menyusunnya menjadi JSON, yang mengirimkannya ke Server Zabbix untuk visualisasi, di mana harus ada template untuk metriknya.

Memantau PostgreSQL menggunakan Zabbix

Skema kerja Mamonsu

Menampilkan Mamonsu

  • Pekerjaan yang efisien dengan PostgreSQL. Koneksi persisten ke PostgreSQL adalah keunggulan utama Mamonsu. Dalam hal ini, jumlah maksimum koneksi sama dengan jumlah maksimum database yang terhubung.
  • Perluasan. Mamonsu adalah agen "plugin" sepenuhnya, dan karena struktur tetap dari setiap plugin dan kesederhanaan relatif Python, seseorang dapat dengan mudah mempelajari cara menulis baru atau mengedit plugin standar, yaitu parameter pengumpulan metrik.
  • Cakupan luas metrik pemantauan untuk PotgreSQL termasuk metrik khusus ekstensi.
  • peluncuran cepat, ketersediaan di luar kotak.
  • Mengupload template dan file konfigurasi, serta mengunggah ke Zabbix Server.
  • lintas platform, yang penting bagi pelanggan kami yang menggunakan berbagai distribusi Linux, termasuk yang dalam negeri.
  • Lisensi klausa BSD.

Saat ini kami menawarkan banyak plugin dan di setiap versi berikutnya kami mencoba menambahkan sesuatu yang baru.

  • 14 plugin untuk PostgreSQL,
  • 8 plugin untuk OS Linux,
  • 4 plugin untuk OS Windows.

Mamonsu mengumpulkan lebih dari 110 metrik PostgreSQL dan sistem operasi:

  • 70 metrik PostgreSQL,
  • 40 metrik OS Linux,
  • 8 metrik OS Windows.

Metrik kunci termasuk ketersediaan DBMS, jumlah koneksi, ukuran database, pos pemeriksaan, kecepatan baca/tulis, kunci, jumlah proses autovacuum, dan kecepatan pembuatan WAL. Daftar lengkap metrik yang tersedia, serta deskripsi mendetail tentang semua alat, tersedia di repositori di situs GitHub.

Memantau PostgreSQL menggunakan Zabbix

Daftar metrik yang tersedia di GitHub

Jalankan Mamonsu dalam 5 menit

Untuk mengatur pemantauan PostgreSQL dan sistem operasi menggunakan Mamonsu, Anda dapat melakukannya dalam 5 menit dengan mengikuti 5 langkah sederhana.

  1. Menginstal Mamonsu. Mamonsu dapat dibangun dari sumber atau menggunakan paket yang tersedia.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Pengaturan koneksi. Penting untuk mengatur parameter koneksi untuk PostgreSQL dan Zabbix Server di file agent.conf.

/etc/mamonsu/agent.conf

  1. Ekspor templat ke Server Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Menambahkan host ke Zabbix Server. Template yang diekspor akan terhubung secara otomatis ke host baru di Server Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Luncurkan.

$ service mamonsu start

Arah Pengembangan Mamonsu

Sebagai bagian dari pengembangan Mamonsu, kami berencana menyempurnakan metrik dan membuat plugin baru, seperti plugin untuk memantau ukuran masing-masing tabel. Kami juga berencana untuk meningkatkan dan membuat alat tambahan, serta memperluas kemampuan penyetelan otomatis melalui perintah lagu mamonsu.

Modul pemantauan PostgreSQL sebagai bagian dari Zabbix Agent 2

Driver yang cepat dan populer digunakan untuk terhubung ke PostgreSQL halx (Driver PG dan toolkit untuk Go).

Sejauh ini, kami menggunakan dua antarmuka: Eksportir, yang memanggil penangan dengan kunci, dan Configurator Zabbix Agent 2, yang membaca dan memeriksa parameter koneksi dengan server yang ditentukan dalam file konfigurasi.

Kami mencoba mengoptimalkan kerja DBMS dengan mengelompokkan metrik dan menggunakan penangan (handler) untuk metrik dan grup metrik, serta menggunakan grup metrik di JSON sebagai variabel dependen (item dependensi), dan penemuan tingkat rendah (aturan penemuan ).

Fitur utama

  • mempertahankan koneksi persisten ke PostgreSQL di antara pemeriksaan;
  • dukungan untuk interval pemungutan suara yang fleksibel;
  • kompatibilitas dengan versi PostgreSQL mulai dari 10 dan Zabbix Server mulai dari versi 4.4;
  • kemampuan untuk menghubungkan dan memantau beberapa instance PostgreSQL secara bersamaan karena Zabbix Agent 2 memungkinkan Anda membuat beberapa sesi.

Level Parameter Koneksi PostgreSQL

Secara total, tersedia tiga tingkat parameter koneksi PostgreSQL, yaitu tugas dan pengaturan:

  • global,
  • Sesi,
  • Makro.

  1. Parameter Global diatur pada tingkat agen, parameter Sesi dan Makro menentukan parameter koneksi database.

  2. Parameter koneksi ke PostgreSQL - Sesi diatur dalam file zabbix_agent2.conf.

Memantau PostgreSQL menggunakan Zabbix

Opsi Koneksi PostgreSQL - Sesi

  • Setelah kata kunci Sesi nama sesi unik ditentukan, yang harus ditentukan dalam kunci (templat).
  • Parameter URI ΠΈ UserName diperlukan untuk setiap sesi.
  • Jika tidak ada nama database yang ditentukan, nama database umum default untuk semua sesi PostgreSQL digunakan, yang juga ditentukan dalam file konfigurasi.

  1. Parameter koneksi ke PostgreSQL - Makro diatur dalam kunci metrik di templat (mirip dengan metode yang digunakan di Zabbix Agent 1), yaitu dibuat di templat dan kemudian ditetapkan sebagai parameter di kunci. Dalam hal ini, urutan makro adalah tetap, misalnya, URI selalu terdaftar pertama.

Memantau PostgreSQL menggunakan Zabbix

Parameter koneksi PostgreSQL - Macro

Modul pemantauan PostgreSQL sudah mencakup lebih dari 95 metrik yang memungkinkan Anda mencakup berbagai parameter PostgreSQL, termasuk:

  • jumlah koneksi
  • ukuran basis data,
  • pengarsipan file wal,
  • pos pemeriksaan,
  • jumlah tabel "membengkak",
  • status replikasi,
  • penundaan replika.

Metrik PostgreSQL tidak informatif tanpa parameter sistem operasi. Tapi Zabbix Agent 2 sudah tahu cara mengumpulkan parameter sistem operasi, jadi untuk mendapatkan gambaran lengkapnya, kita cukup menghubungkan template yang diperlukan ke host.

Pawang

Handler adalah unit utama modul tempat permintaan itu sendiri dijalankan dan yang memungkinkan Anda menerima metrik.

Untuk mendapatkan metrik sederhana:

  1. Buat file untuk mendapatkan metrik baru:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Kami menghubungkan paket dan menentukan kunci unik (kunci) dari metrik:

Memantau PostgreSQL menggunakan Zabbix

  1. Kami membuat penangan (penangan) dengan permintaan, yaitu, kami memulai variabel yang akan berisi hasil:

Memantau PostgreSQL menggunakan Zabbix

  1. Kami menjalankan permintaan:

Memantau PostgreSQL menggunakan Zabbix

Penting untuk memeriksa permintaan kesalahan, setelah itu hasilnya akan diambil oleh proses Zabbix Agent 2.

  1. Daftarkan kunci metrik baru:

Memantau PostgreSQL menggunakan Zabbix

Setelah mendaftarkan metrik, Anda dapat membuat ulang agen dengan metrik baru.

Modul tersedia mulai dari Zabbix 5.0 di website https://www.zabbix.com/download. Dalam versi Zabbix ini, parameter diatur secara terpisah melalui host dan port. Di Zabbix 5.0.2, yang akan segera dirilis, parameter koneksi akan dikemas menjadi satu URI.

Terima kasih!

Berguna Link

GitHub Mamonsu

Dokumentasi Mamonsu

Zabbix Git

Sumber: www.habr.com

Tambah komentar