Ha több adatra van szükséged attól, hogy fut vagy nem fut az adatbázis szervered, akkor ez a leírás neked szól.
Kétféle templét is van a zabbix 7.0-ban: a sima (MySQL by Zabbix agent) és a (MySQL by Zabbix agent 2), ami a v2-es agenthez való. A végeredmény szempontjából mindegy, hogy melyiket használod, praktikusan azt válaszd, amilyen agented fut az adatbázis szerveren. Ha nem lenne a rendszereden, innen tudod letölteni a kívánt verziót.
Ám a beállítás szempontjából nem mindegy, hogy melyik agentet választod:
- v1 agent esetén az adatbázis szerveren fel kell venni egy felhasználót a
[client]
alá, hogy localhostról jelszó nélkül tudjunk csatlakozni (ez újraindítást igényel) - v2 agent esetén makrókkal állítjuk be az accountot, így bárhonnan tudjuk monitorozni a szervert
A közös a két módszerben, hogy létre kell hoznunk egy dedikált felhasználót a szükséges minimum jogokkal az adatbázis szerveren.
Kezdjük a közös dologgal, hozzunk létre egy adatbázis felhasználót
Parancssorból vagy a kedvenc programoddal hozz létre egy ‘zbx_monitor’ nevű felhasználót az adatbázisodon. Ezekkel a globális (zbx_monitor’@’%) jogokkal kell rendelkeznie:
- REPLICATION CLIENT
- PROCESS
- SHOW DATABASES
- SHOW VIEW
Példa a parancssoros létrehozásra:
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
Lássuk a MySQL by Zabbix agent templét beállítását
- lépés: lépj be arra a szerverre, ahol a DB fut, és hozz létre egy fájlt a /etc/zabbix/zabbix_agentd.d/ mappába. A név tetszőleges, a kiterjesztése .conf legyen. A tartalma ez legyen:
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
2. lépés: indítsd újra a zabbix-agentet.
3. lépés: hozz létre egy fájlt az adatbázis szervered konfig mappájába, pl a /etc/my.cnf.d/zabbix.conf névvel (ellenőrizd a saját rendszered, eltérhet a mappa elérési útja):
[client]
protocol=tcp
user='zbx_monitor'
password='<password>'
Indítsd újra az adatbázis szervert.
4. lépés: vegyük fel a hosztot a zabbixban:
A csoport neve tetszőleges, ahogy a hoszt neve is, a templét adott, az IP cím (vagy a hoszt név) pedig azé a szerveré legyen, ahol az adatbázis fut.
Lássuk a MySQL by Zabbix agent 2 templét beállítását
- lépés: vegyünk fel egy új hosztot a zabbixban:
A csoport neve tetszőleges, ahogy a hoszt neve is, a templét adott, az IP cím (vagy a hoszt név) pedig bármelyik géped lehet, amelyiken a zabbix agent v2 fut. Annyi a kikötés, hogy az agent2 lássa az adatbázis szervert. Mentés előtt vegyük fel a szükséges makrókat:
Ide kellenek annak a felhasználónak az adatai, akit első lépésben hozzáadtunk az adatbázishoz, a példában ‘zbx_monitor’ néven. A {$MYSQL.DSN} pedig magának az adatbázisnak az elérhetőségét tartalmazza protokoll://hoszt:port formában, az én esetemben tcp://192.168.5.2:3306. Opcionálisan kizárhatunk adatbázist a figyelésből a {$MYSQL.DBNAME.NOT_MATCHES} makróval, ennek van default értéke: ‘information_schema’, ám van egy másik virtuális adatbázis is ‘performance_schema’ néven, szerintem ezt is felesleges figyelni, így ha csak a ‘_schema’ értéket írom a makróhoz, mind a kettőt kizártuk.
A jelszónál használhatsz típust is a normál szöveges mező helyett, ebben az esetben a jelszót (vagy bármilyen érzékeny adatot) senki sem tudja elolvasni, csak módosítani lehet. Ez akkor hasznos, ha többen adminisztráljátok a zabbixot.
Bármelyik agentet és a hozzá passzoló templétet választod, kapni fogsz kb 52 adatot az adatbázisod belső működéséről, illetve minden adatbázisról 1-1 adatot, a méretét. A templéthez tartozik dashboard is, ahol a legfontosabb paraméterekről kapunk grafikonokat:
Összefoglalás
Szerintem lényegesen egyszerűbb a v2 agentet használni erre a feladatra, mivel nem kell fájlokat módosítani (se a zabbixon, se az adatbázis szerveren), és semmit sem kell újraindítani. Ráadásul ha minden agented v1-es, elég egy gépre feltenni egy v2 agentet, akár dockerben is, csak érje el hálózaton az adatbázis portját.