PostgreSQL monitorozása Zabbix használatával

PostgreSQL monitorozása Zabbix használatával
Darya Vilkova beszámolója a Zabbix Meetup Online-on

Szeretném bemutatni önöknek a PostgreSQL és az operációs rendszer monitoring eszközét, amelyet cégünk a Zabbix felhasználásával fejleszt.

Már régóta a Zabbix-ot választottuk monitoring eszközül, mert ez egy nyílt forráskódú platform, amelyet egy aktív közösség támogat, és amely Oroszországban népszerű.

Kifejlesztettük az aktív ügynököt — Mamonsut, amely rugalmasabb monitoringot biztosított annál, amit a standard eszközök akkor lehetővé tettek, és a metrikák gyűjtését és Zabbix Server-re való elküldését biztosította. Cégünknél a Mamonsut auditálás során használják.

Mamonsu

A Mamonsu egy aktív ügynök (Zabbix Trapper) a PostgreSQL és az operációs rendszer monitoringjára. A Mamonsu (Python nyelven íródott) lehetővé teszi a PostgreSQL és az operációs rendszer monitoring paramétereinek beállítását öt perc alatt.

A Mamonsu további eszközökkel rendelkezik:

  • mamonsu tune — parancs, amely szerkeszti az PostgreSQL konfigurációs fájlban található beállításokat a Mamonsu ügynökkel rendelkező géphez.
  • mamonsu report — parancs, amely válaszokat készít az operációs rendszerről és a PostgreSQL-ről.

A Mamonsu a DBMS szerverre települ, információt gyűjt, JSON formátumban összesíti, és a Zabbix Server-re küldi vizualizálás céljából, ahol a metrikáihoz sablonnak kell lennie.

PostgreSQL monitorozása Zabbix használatával

A Mamonsu működési sémája

A Mamonsu lehetőségei

  • Hatékony munka a PostgreSQL-lel. A PostgreSQL-lel való folyamatos kapcsolat a Mamonsu fő előnye. Ebben az esetben a maximális kapcsolatok száma megegyezik a maximális adatbázisok számával, amelyekhez csatlakozik.
  • Skálázhatóság. A Mamonsu teljesen "plug-in" ügynök, és a minden plug-in rögzített struktúrájának és a Python viszonylag egyszerűségének köszönhetően könnyen megtanulhatja új plug-inok írását vagy a standard plug-inok szerkesztését, azaz a metrikák gyűjtési paramétereit.
  • Széleskörű metrikák lefedettsége a monitoringhoz a PostgreSQL számára, beleértve a specifikus kiterjesztések metrikáit is.
  • Gyors indítás, az "out-of-the-box" elérhetőség.
  • Sablonok és konfigurációs fájlok exportálása, valamint feltöltés a Zabbix Server-re.
  • Keresztplatformosság, ami fontos ügyfeleink számára, akik különböző Linux disztribúciókat használnak, beleértve a hazaiakat is.
  • BSD-kalóz licenc.

Jelenleg számos plug-int kínálunk, és minden következő verzióban próbálunk valami új dolgot hozzáadni.

  • 14 plugin a PostgreSQL-hez,
  • 8 plugin a Linux OS-hez,
  • 4 plugin a Windows OS-hez.

A Mamonsu több mint 110 PostgreSQL és operációs rendszer metrikát gyűjt:

  • 70 PostgreSQL metrikát,
  • 40 Linux operációs rendszer metrikát,
  • 8 Windows operációs rendszer metrikát.

A fő metrikák közé tartozik az adatbázis rendelkezésre állása, a kapcsolatok száma, az adatbázis mérete, a checkpointok, az olvasási/írási sebesség, a zárolások, az automatikus takarítási folyamatok száma és a WAL generálás sebessége. A rendelkezésre álló metrikák teljes listája, valamint az összes eszköz részletes leírása elérhető a tárhelyen GitHubon.

PostgreSQL monitorozása Zabbix használatával

A GitHubon elérhető metrikák listája

Mamonsu telepítése 5 perc alatt

A PostgreSQL és az operációs rendszer monitorozása Mamonsu segítségével 5 perc alatt elvégezhető, mindössze 5 egyszerű lépésben.

  1. Mamonsu telepítése. A Mamonsu akár forráskód alapján is összegyűjthető, vagy elérhető csomagokat használhat.

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

build && python setup.py install

  1. Kapcsolatok beállítása. Meg kell adni a PostgreSQL és a Zabbix Server közötti kapcsolat paramétereit az agent.conf fájlban.

/etc/mamonsu/agent.conf

  1. Sablon exportálása a Zabbix Serverre.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Hálózati csomópont hozzáadása a Zabbix Serverhez. Az exportált sablon automatikusan csatlakoztatva lesz az új hálózati csomóponthoz a Zabbix Serveren.

$ mamonsu zabbix host create mamonsu-demo

  1. Indítás.

$ service mamonsu start

A Mamonsu fejlesztési irányai

A Mamonsu fejlesztése során a metrikák további kidolgozását és új pluginek létrehozását tervezzük, például egy adott táblák méretének monitorozására szolgáló plugint. Emellett tervezzük az eszközök javítását és új kiegészítések létrehozását, valamint az automatikus beállítási lehetőségek kibővítését a mamonsu tune.

PostgreSQL monitoring modul a Zabbix Agent 2 keretein belül

A PostgreSQL eléréséhez gyors és népszerű drivert használunk pgx (PG driver and toolkit for Go).

Jelenleg két interfészt használunk: az Exportert, amely a kulcs alapján hívja meg a kezelőt, és a Zabbix Agent 2 Configuratorát, amely beolvassa és ellenőrzi a szerverrel való kapcsolat paramétereit, amelyek a konfigurációs fájlban vannak megadva.

Igényt tartottunk a DB teljesítményének optimalizálására azáltal, hogy csoportosítjuk a metrikákat és kezelőt (handler) használunk a metrikák és metrikacsoportok feldolgozásához, valamint metrikacsoportokat definiálunk JSON formátumban, mint függő változókat (dependency items), és alacsony szintű felfedezést (discovery rules) alkalmazunk.

Főbb lehetőségek

  • állandó kapcsolat fenntartása a PostgreSQL-lal az ellenőrzések között;
  • rugalmasság a kérdezési intervallumok tekintetében;
  • kompatibilitás a PostgreSQL 10-es verziójától kezdődően, és a Zabbix Server 4.4-es verziójától.
  • a PostgreSQL példányok egyidejű csatlakoztatásának és figyelésének lehetősége, mivel a Zabbix Agent 2 lehetővé teszi több munkamenet létrehozását.

Csatlakozási paraméterek szintjei a PostgreSQL-hez

Összesen három csatlakozási paraméterszint érhető el a PostgreSQL-hez, azaz feladatok és beállítások:

  • Globális,
  • Munkamenetek,
  • Makrók.

  1. A Globális paramétereket az ügynök szintjén állítják be, a Munkamenetek és a Makrók határozzák meg az adatbázishoz való csatlakozási paramétereket.

  2. A PostgreSQL-hez való csatlakozási paraméterek — Munkamenetek a következő fájlban vannak beállítva: zabbix_agent2.conf.

PostgreSQL monitorozása Zabbix használatával

A PostgreSQL-hez való csatlakozási paraméterek — Munkamenetek

  • A kulcsszó után Munkamenetek egyedi munkamenetnevet kell megadni, amelyet a kulcsban (sablonban) kell megadni.
  • Beállítások URI és UserName minden munkamenethez kötelező.
  • Ha az adatbázis neve nincs megadva, akkor a PostgreSQL összes munkamenete számára használt alapértelmezett név kerül alkalmazásra, amely szintén a konfigurációs fájlban van megadva.

  1. A PostgreSQL-hez való csatlakozási paraméterek — Makrók a metrika kulcsába vannak beállítva a sablonban (hasonlóan az Zabbix Agent 1 által használt módszerhez), azaz a sablonban jönnek létre, és ezután paraméterekként vannak feltüntetve a kulcsban. Eközben a makrók sorrendje rögzített, azaz például URI mindig az első helyen szerepel.

PostgreSQL monitorozása Zabbix használatával

A PostgreSQL-hez való csatlakozási paraméterek — Makrók

A PostgreSQL megfigyelő modulja már több mint 95 metrikát tartalmaz, amelyek lehetővé teszik a PostgreSQL paraméterek széles spektrumának lefedését, beleértve:

  • csatlakozások száma,
  • adatbázisok mérete,
  • wal-fájlok archiválása,
  • ellenőrzési pontok,
  • túlnőtt táblák száma,
  • replikáció állapota,
  • replika késleltetése.

A PostgreSQL metrikák nem informálnak az operációs rendszer paraméterei nélkül. De a Zabbix Agent 2 már tudja gyűjteni az operációs rendszer paramétereit, így a teljes kép megszerzéséhez csupán csatlakoztatnunk kell a megfelelő sablonokat a hálózati csomóponthoz.

Handler (kezelő)

A handler (kezelő) — a modul fő egysége, amelyben a lekérdezés végrehajtódik, és amely lehetővé teszi a metrikák megküldését.

Egyszerű metrika kinyeréséhez:

  1. Hozzunk létre egy fájlt egy új metrika kinyeréséhez:

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

  1. Kapcsoljuk be a csomagot, és adjuk meg az egyedi kulcsot (kulcsokat) a metrikákhoz:

PostgreSQL monitorozása Zabbix használatával

  1. Hozzunk létre egy handlert (kezelőt) a lekérdezéssel, azaz hozzunk létre egy változót, amelyben az eredmény tárolódik:

PostgreSQL monitorozása Zabbix használatával

  1. Végezzük el a lekérdezést:

PostgreSQL monitorozása Zabbix használatával

Ellenőriznünk kell a lekérdezést hibák miatt, majd az eredmény a Zabbix Agent 2 folyamat általi feldolgozásra kerül.

  1. Regisztráljuk az új metrika kulcsát:

PostgreSQL monitorozása Zabbix használatával

A metrika regisztrációja után új metrikával újra össze lehet szerelni az ügynököt.

A modul elérhető a Zabbix 5.0-tól kezdve a weboldalon. https://www.zabbix.com/download. Ebben a Zabbix verzióban a paramétereket külön-külön kell megadni a host és a port segítségével. A hamarosan megjelenő Zabbix 5.0.2-es verzióban a csatlakozási paraméterek egy URI-ba lesznek összevonva.

Köszönöm a figyelmet!

Hasznos linkek

GitHub Mamonsu

Dokumentáció a Mamonsu-hoz

Zabbix Git

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster