Pagsubaybay sa PostgreSQL gamit ang Zabbix

Pagsubaybay sa PostgreSQL gamit ang Zabbix
Ulat ni Daria Vilkova para sa Zabbix Meetup Online

Gusto kong ipakilala sa iyo ang PostgreSQL at operating system monitoring tool, na binuo ng aming kumpanya gamit ang Zabbix.

Pinili namin ang Zabbix bilang aming tool sa pagsubaybay sa mahabang panahon dahil isa itong open source na platform na sinusuportahan ng isang aktibong komunidad na napakasikat sa Russia.

Gumawa kami ng aktibong ahente - Mamonsu, na nagbigay ng mas nababaluktot na pagsubaybay kaysa sa mga karaniwang tool na pinapayagan noong panahong iyon, at tiniyak ang koleksyon ng mga sukatan at ang pagpapadala ng mga ito sa Zabbix Server. Sa aming kumpanya, ang Mamonsu ay ginagamit sa pag-audit.

Mamonsu

Ang Mamonsu ay isang aktibong ahente (Zabbix Trapper) para sa pagsubaybay sa PostgreSQL at sa operating system. Ang Mamonsu (nakasulat sa Python) ay nagpapahintulot sa iyo na i-configure ang PostgreSQL at mga setting ng pagsubaybay sa operating system sa loob ng limang minuto.

May mga karagdagang tool ang Mamonsu:

  • Ang mamonsu tune ay isang command na nag-e-edit ng mga setting sa PostgreSQL configuration file para sa makina kung saan naka-install ang ahente ng Mamonsu.
  • Ang ulat ng mamonsu ay isang command na bumubuo ng mga sagot tungkol sa operating system at PostgreSQL.

Ang Mamonsu ay naka-install sa DBMS server, nangongolekta ng impormasyon, binubuo ito sa JSON, na nagpapadala nito sa Zabbix Server para sa visualization, kung saan dapat mayroong isang template para sa mga sukatan nito.

Pagsubaybay sa PostgreSQL gamit ang Zabbix

Mamonsu work scheme

Nagtatampok ng Mamonsu

  • Mahusay na trabaho sa PostgreSQL. Ang patuloy na koneksyon sa PostgreSQL ay ang pangunahing bentahe ng Mamonsu. Sa kasong ito, ang maximum na bilang ng mga koneksyon ay katumbas ng maximum na bilang ng mga database kung saan ito kumokonekta.
  • Pagpapalawak. Ang Mamonsu ay isang ganap na "plugin" na ahente, at dahil sa nakapirming istraktura ng bawat plugin at ang relatibong pagiging simple ng Python, madaling matutunan ng isa kung paano magsulat ng bago o mag-edit ng mga karaniwang plugin, ibig sabihin, mga parameter ng koleksyon ng mga sukatan.
  • Malawak na saklaw ng mga sukatan ng pagsubaybay para sa PotgreSQL kasama ang mga sukatan na tukoy sa extension.
  • mabilis na paglulunsad, availability sa labas ng kahon.
  • Pag-upload ng mga template at configuration file, pati na rin ang pag-upload sa Zabbix Server.
  • Cross-platform, na mahalaga para sa aming mga customer na gumagamit ng iba't ibang distribusyon ng Linux, kabilang ang mga domestic.
  • BSD-sugnay na lisensya.

Sa ngayon, nag-aalok kami ng maraming plugin at sa bawat susunod na bersyon sinusubukan naming magdagdag ng bago.

  • 14 na plugin para sa PostgreSQL,
  • 8 plugin para sa OS Linux,
  • 4 na plugin para sa OS Windows.

Nangongolekta ang Mamonsu ng higit sa 110 PostgreSQL at mga sukatan ng operating system:

  • 70 mga sukatan ng PostgreSQL,
  • 40 OS Linux metrics,
  • 8 OS Windows metrics.

Kabilang sa mga pangunahing sukatan ang availability ng DBMS, bilang ng mga koneksyon, laki ng database, mga checkpoint, bilis ng pagbasa/pagsusulat, mga lock, bilang ng mga proseso ng autovacuum, at bilis ng pagbuo ng WAL. Ang isang kumpletong listahan ng mga magagamit na sukatan, pati na rin ang isang detalyadong paglalarawan ng lahat ng mga tool, ay magagamit sa mga repositoryo sa GitHub site.

Pagsubaybay sa PostgreSQL gamit ang Zabbix

Listahan ng mga available na sukatan sa GitHub

Patakbuhin ang Mamonsu sa loob ng 5 minuto

Upang i-set up ang pagsubaybay sa PostgreSQL at ang operating system gamit ang Mamonsu, magagawa mo ito sa loob ng 5 minuto sa pamamagitan ng pagsunod sa 5 simpleng hakbang.

  1. Pag-install ng Mamonsu. Maaaring itayo ang Mamonsu mula sa pinagmulan o gumamit ng mga available na pakete.

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

build && python setup.py install

  1. Setup ng koneksyon. Kinakailangang itakda ang mga parameter ng koneksyon para sa PostgreSQL at Zabbix Server sa agent.conf file.

/etc/mamonsu/agent.conf

  1. I-export ang template sa Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Pagdaragdag ng host sa Zabbix Server. Ang na-export na template ay awtomatikong makokonekta sa bagong host sa Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Ilunsad.

$ service mamonsu start

Mga Direksyon sa Pag-unlad ng Mamonsu

Bilang bahagi ng pagbuo ng Mamonsu, plano naming pinuhin ang mga sukatan at lumikha ng mga bagong plugin, tulad ng isang plugin para sa pagsubaybay sa laki ng mga indibidwal na talahanayan. Plano rin naming pagbutihin at lumikha ng mga karagdagang tool, pati na rin palawakin ang mga kakayahan sa auto-tuning sa pamamagitan ng command mamonsu tune.

PostgreSQL monitoring module bilang bahagi ng Zabbix Agent 2

Isang mabilis at sikat na driver ang ginagamit para kumonekta sa PostgreSQL pgx (PG driver at toolkit para sa Go).

Sa ngayon, gumagamit kami ng dalawang interface: Exporter, na tumatawag sa handler sa pamamagitan ng key, at Configurator Zabbix Agent 2, na nagbabasa at sumusuri sa mga parameter ng koneksyon sa server na tinukoy sa configuration file.

Sinubukan naming i-optimize ang gawain ng DBMS sa pamamagitan ng pagpapangkat ng mga sukatan at paggamit ng handler (handler) para sa mga sukatan at pangkat ng sukatan, pati na rin ang paggamit ng mga pangkat ng mga sukatan sa JSON bilang mga dependent variable (mga item sa dependency), at mababang antas ng pagtuklas (mga panuntunan sa pagtuklas ).

Pangunahing mga tampok

  • pagpapanatili ng patuloy na koneksyon sa PostgreSQL sa pagitan ng mga tseke;
  • suporta para sa nababaluktot na mga pagitan ng botohan;
  • pagiging tugma sa mga bersyon ng PostgreSQL simula 10 at Zabbix Server simula sa bersyon 4.4;
  • ang kakayahang kumonekta at subaybayan ang maramihang mga pagkakataon ng PostgreSQL nang sabay-sabay dahil sa katotohanang pinapayagan ka ng Zabbix Agent 2 na lumikha ng maraming session.

Mga Antas ng Parameter ng Koneksyon ng PostgreSQL

Sa kabuuan, tatlong antas ng mga parameter ng koneksyon ng PostgreSQL ang available, ibig sabihin, mga gawain at setting:

  • pandaigdigan,
  • session,
  • Mga macro.

  1. Ang mga pandaigdigang parameter ay nakatakda sa antas ng ahente, ang Session at Macros na mga parameter ay tumutukoy sa mga parameter ng koneksyon sa database.

  2. Mga parameter ng koneksyon sa PostgreSQL - Nakatakda ang mga session sa file zabbix_agent2.conf.

Pagsubaybay sa PostgreSQL gamit ang Zabbix

Mga Opsyon sa Koneksyon ng PostgreSQL - Mga Session

  • Pagkatapos ng keyword Session isang natatanging pangalan ng session ay tinukoy, na dapat na tinukoy sa key (template).
  • Mga Parameter URI ΠΈ UserName kinakailangan para sa bawat sesyon.
  • Kung hindi tinukoy ang base name, ang default na karaniwang base name para sa lahat ng PostgreSQL session ay ginagamit, na nakatakda rin sa configuration file.

  1. Mga parameter ng koneksyon sa PostgreSQL - Ang mga macro ay nakatakda sa metric key sa template (katulad ng paraang ginamit sa Zabbix Agent 1), ibig sabihin, ginawa ang mga ito sa template at pagkatapos ay tinukoy bilang mga parameter sa key. Sa kasong ito, ang pagkakasunud-sunod ng mga macro ay naayos, ibig sabihin, halimbawa, URI laging nakalista muna.

Pagsubaybay sa PostgreSQL gamit ang Zabbix

Mga parameter ng koneksyon sa PostgreSQL - Macros

Kasama na sa module ng pagsubaybay ng PostgreSQL ang higit sa 95 mga sukatan na nagbibigay-daan sa iyo upang masakop ang isang medyo malawak na hanay ng mga parameter ng PostgreSQL, kabilang ang:

  • bilang ng mga koneksyon
  • laki ng database,
  • pag-archive ng mga wal file,
  • mga checkpoint,
  • ang bilang ng mga "bloated" na talahanayan,
  • katayuan ng pagtitiklop,
  • pagkaantala ng replika.

Ang mga sukatan ng PostgreSQL ay hindi nagbibigay kaalaman nang walang mga parameter ng operating system. Ngunit alam na ng Zabbix Agent 2 kung paano mangolekta ng mga parameter ng operating system, kaya para makuha ang buong larawan, ikinonekta lang namin ang mga kinakailangang template sa host.

Handler

Ang handler ay ang pangunahing yunit ng module kung saan ang kahilingan mismo ay isinasagawa at nagbibigay-daan sa iyong makatanggap ng mga sukatan.

Upang makakuha ng isang simpleng sukatan:

  1. Gumawa ng file para makakuha ng bagong sukatan:

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

  1. Ikinonekta namin ang package at tinutukoy ang natatanging key (mga key) ng mga sukatan:

Pagsubaybay sa PostgreSQL gamit ang Zabbix

  1. Lumilikha kami ng handler (handler) na may kahilingan, ibig sabihin, sinisimulan namin ang isang variable na maglalaman ng resulta:

Pagsubaybay sa PostgreSQL gamit ang Zabbix

  1. Isinasagawa namin ang kahilingan:

Pagsubaybay sa PostgreSQL gamit ang Zabbix

Kinakailangang suriin ang kahilingan para sa mga error, pagkatapos kung saan ang resulta ay kukunin ng proseso ng Zabbix Agent 2.

  1. Irehistro ang bagong metric key:

Pagsubaybay sa PostgreSQL gamit ang Zabbix

Pagkatapos irehistro ang sukatan, maaari mong muling buuin ang ahente gamit ang bagong sukatan.

Available ang module simula sa Zabbix 5.0 sa site https://www.zabbix.com/download. Sa bersyong ito ng Zabbix, ang mga parameter ay nakatakda nang hiwalay sa pamamagitan ng host at port. Sa Zabbix 5.0.2, na malapit nang ilabas, ang mga parameter ng koneksyon ay ipapakete sa isang solong URI.

Salamat sa iyo!

Kapaki-pakinabang na mga link

GitHub Mamonsu

Mamonsu Documentation

Zabbix Git

Pinagmulan: www.habr.com

Magdagdag ng komento