Memantau PostgreSQL menggunakan Zabbix

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

Saya ingin memperkenalkan anda kepada PostgreSQL dan alat pemantauan sistem pengendalian yang syarikat kami bangunkan menggunakan Zabbix.

Kami telah lama memilih Zabbix sebagai alat pemantauan kami kerana ia adalah platform sumber terbuka yang disokong oleh komuniti aktif yang sangat popular di Rusia.

Kami mencipta ejen aktif - Mamonsu, yang menyediakan pemantauan yang lebih fleksibel daripada alat standard yang dibenarkan pada masa itu, dan memastikan pengumpulan metrik dan penghantarannya ke Pelayan Zabbix. Di syarikat kami, Mamonsu digunakan semasa menjalankan audit.

Mamonsu

Mamonsu ialah ejen aktif (Zabbix Trapper) untuk memantau PostgreSQL dan sistem pengendalian. Mamonsu (ditulis dalam Python) membolehkan anda mengkonfigurasi tetapan pemantauan PostgreSQL dan sistem pengendalian dalam masa lima minit.

Mamonsu mempunyai alat tambahan:

  • mamonsu tune ialah arahan yang menyunting tetapan dalam fail konfigurasi PostgreSQL untuk mesin di mana ejen Mamonsu dipasang.
  • laporan mamonsu ialah arahan yang menjana jawapan tentang sistem pengendalian dan PostgreSQL.

Mamonsu dipasang pada pelayan DBMS, mengumpul maklumat, menyusunnya ke dalam JSON, yang dihantar untuk visualisasi ke Pelayan Zabbix, di mana harus ada templat untuk metriknya.

Memantau PostgreSQL menggunakan Zabbix

Skim operasi Mamonsu

Ciri-ciri Mamonsu

  • Bekerja dengan berkesan dengan PostgreSQL. Sambungan berterusan ke PostgreSQL adalah kelebihan utama Mamonsu. Dalam kes ini, bilangan maksimum sambungan adalah sama dengan bilangan maksimum pangkalan data yang disambungkan.
  • Kebolehkembangan. Mamonsu ialah ejen pemalam sepenuhnya, dan terima kasih kepada struktur tetap setiap pemalam dan kesederhanaan relatif Python, anda boleh belajar dengan mudah cara menulis pemalam standard baharu atau mengedit, iaitu parameter pengumpulan metrik.
  • Liputan luas metrik untuk pemantauan untuk PotgreSQL, termasuk metrik untuk sambungan tertentu.
  • Permulaan pantas, Ketersediaan di luar kotak.
  • Memuat naik templat dan fail konfigurasi, serta memuat naik ke Pelayan Zabbix.
  • Merentas platform, yang penting untuk pelanggan kami yang menggunakan pelbagai pengedaran Linux, termasuk pengedaran domestik.
  • Lesen klausa BSD.

Pada masa ini kami menawarkan banyak pemalam dan dalam setiap versi seterusnya kami cuba menambah sesuatu yang baharu.

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

Mamonsu mengumpul lebih daripada 110 PostgreSQL dan metrik sistem pengendalian:

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

Metrik utama termasuk ketersediaan DBMS, bilangan sambungan, saiz pangkalan data, pusat pemeriksaan, kelajuan baca/tulis, kunci, bilangan proses autovakum dan kadar penjanaan WAL. Senarai lengkap metrik yang tersedia, serta penerangan terperinci tentang semua alat, tersedia dalam repositori di tapak web GitHub.

Memantau PostgreSQL menggunakan Zabbix

Senarai metrik yang tersedia di GitHub

Lancarkan Mamonsu dalam masa 5 minit

Anda boleh menyediakan PostgreSQL dan pemantauan sistem pengendalian menggunakan Mamonsu dalam masa 5 minit dengan mengikuti 5 langkah mudah.

  1. Memasang Mamonsu. Mamonsu boleh dibina dari sumber atau menggunakan pakej yang tersedia.

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

build && python setup.py install

  1. Menyediakan sambungan. Ia adalah perlu untuk menentukan parameter sambungan untuk PostgreSQL dan Pelayan Zabbix dalam fail agent.conf.

/etc/mamonsu/agent.conf

  1. Mengeksport templat ke Pelayan Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Menambah hos pada Pelayan Zabbix. Templat yang dieksport akan disambungkan secara automatik ke hos baharu pada Pelayan Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Pelancaran.

$ service mamonsu start

Arah pembangunan Mamonsu

Sebagai sebahagian daripada pembangunan Mamonsu, kami merancang untuk memperhalusi metrik dan mencipta pemalam baharu, contohnya pemalam untuk memantau saiz jadual individu. Kami juga merancang untuk menambah baik dan mencipta alat tambahan, serta mengembangkan keupayaan penalaan automatik melalui arahan lagu mamonsu.

Modul pemantauan PostgreSQL disertakan dalam Zabbix Agent 2

Pemacu yang pantas dan popular digunakan untuk menyambung ke PostgreSQL pgx (Pemandu dan kit alat PG untuk Go).

Buat masa ini kami menggunakan dua antara muka: Pengeksport, yang memanggil pengendali dengan kunci, dan Configurator Zabbix Agent 2, yang membaca dan menyemak parameter sambungan pelayan yang dinyatakan dalam fail konfigurasi.

Kami cuba mengoptimumkan prestasi DBMS dengan mengumpulkan metrik dan menggunakan pengendali untuk kumpulan metrik dan metrik, serta menggunakan kumpulan metrik dalam JSON sebagai pembolehubah bersandar (item pergantungan) dan penemuan peringkat rendah (peraturan penemuan).

Ciri-ciri utama

  • mengekalkan sambungan berterusan ke PostgreSQL antara semakan;
  • sokongan untuk selang pengundian yang fleksibel;
  • serasi dengan versi PostgreSQL bermula dari 10, dan Pelayan Zabbix bermula dari versi 4.4;
  • keupayaan untuk menyambung dan memantau beberapa kejadian PostgreSQL secara serentak disebabkan oleh fakta bahawa Zabbix Agent 2 membenarkan anda membuat berbilang sesi.

Tahap parameter sambungan PostgreSQL

Secara keseluruhan, tiga tahap parameter sambungan ke PostgreSQL tersedia, iaitu tugas dan tetapan:

  • global,
  • Sesi
  • Makro.

  1. Parameter Global ditetapkan pada peringkat ejen, parameter Sesi dan Makro menentukan parameter sambungan untuk pangkalan data.

  2. Parameter sambungan ke PostgreSQL - Sesi ditetapkan dalam fail zabbix_agent2.conf.

Memantau PostgreSQL menggunakan Zabbix

Parameter sambungan PostgreSQL - Sesi

  • Selepas kata kunci Sesyen nama sesi unik ditunjukkan, yang mesti dinyatakan dalam kunci (templat).
  • Parameter URI ΠΈ UserName diperlukan untuk setiap sesi.
  • Jika nama pangkalan data tidak dinyatakan, nama pangkalan data biasa lalai untuk semua sesi PostgreSQL digunakan, yang juga dinyatakan dalam fail konfigurasi.

  1. Parameter sambungan ke PostgreSQL - Makro ditentukan dalam kunci metrik dalam templat (serupa dengan kaedah yang digunakan dalam Zabbix Agent 1), iaitu ia dicipta dalam templat dan kemudian ditentukan sebagai parameter dalam kunci. Dalam kes ini, jujukan makro ditetapkan, iaitu, sebagai contoh, URI sentiasa disenaraikan dahulu.

Memantau PostgreSQL menggunakan Zabbix

Parameter sambungan PostgreSQL - Makro

Modul pemantauan PostgreSQL sudah termasuk lebih daripada 95 metrik, yang membolehkan anda merangkumi julat yang agak luas parameter PostgreSQL, termasuk:

  • bilangan sambungan,
  • jumlah pangkalan data,
  • mengarkibkan fail wal,
  • titik kawalan,
  • bilangan meja "kembung",
  • status replikasi,
  • ketinggalan replika.

Metrik PostgreSQL tidak bermaklumat tanpa parameter sistem pengendalian. Tetapi Ejen Zabbix 2 sudah tahu cara mengumpul parameter sistem pengendalian, jadi untuk mendapatkan gambaran lengkap kami hanya menyambungkan templat yang diperlukan ke nod rangkaian.

Pengendali

Pengendali ialah unit utama modul di mana permintaan itu sendiri dilaksanakan dan yang membolehkan anda mendapatkan metrik.

Untuk mendapatkan metrik mudah:

  1. Buat fail untuk menerima metrik baharu:

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

  1. Kami menyambungkan pakej dan menentukan kunci metrik unik:

Memantau PostgreSQL menggunakan Zabbix

  1. Kami mencipta pengendali dengan permintaan, iaitu kami memulakan pembolehubah yang akan mengandungi hasilnya:

Memantau PostgreSQL menggunakan Zabbix

  1. Kami melaksanakan permintaan:

Memantau PostgreSQL menggunakan Zabbix

Ia adalah perlu untuk menyemak permintaan untuk ralat, selepas itu hasilnya akan diambil oleh proses Zabbix Agent 2.

  1. Daftar kunci metrik baharu:

Memantau PostgreSQL menggunakan Zabbix

Selepas mendaftarkan metrik, anda boleh membina semula ejen dengan metrik baharu.

Modul ini boleh didapati bermula dari Zabbix 5.0 di laman web https://www.zabbix.com/download. Dalam versi Zabbix ini, parameter ditetapkan secara berasingan melalui hos dan port. Dalam Zabbix 5.0.2, yang akan dikeluarkan tidak lama lagi, parameter sambungan akan digabungkan menjadi URI tunggal.

Thank you!

Pautan berguna

GitHub Mamonsu

dokumentasi Mamonsu

Zabbix Git

Sumber: www.habr.com

Tambah komen