MySQL szerver monitorozása Zabbix 3.4 alatt

Zabbix

Ahhoz, hogy egy távoli MySQL szervert (jelen esetben 5.5) monitorozni tudjunk Zabbix alatt pár előkészületi lépést meg kell tenni az sql szerver oldalán is.

Zabbix agent telepítése, konfigurálása

Jelen esetben egy Ubuntu LTS szerveren futó MySQL szervert szeretnénk monitorozni egy távoli Zabbix szerverrel. Ehhez telepíteni kell a Zabbix agent-et, ami történhet forrásból vagy hivatalos repository-ból is. Az utóbbi lényegesen egyszerűbb és az agent frissítése is leegyszerűsödik. A zabbix.com oldalán található idevágó dokumentáció részletesen leírja a tennivalókat lépésről-lépésre, így ezzel itt ebben a rövid írásban nem foglalkozok külön. A hivatalos repository-ból nekünk csak a zabbix-agent csomagra lesz szükségünk. Ez a csomag megtalálható a hivatalos Ubuntu repository-ban is, csak ott egy régebbi, 2.4.x verzió érhető el, ami régi, így a csomag telepítését a Zabbix repositoryból végezzük el (apt-get install zabbix-agent).

A csomag telepítése után állítsuk be a megfelelő paramétereket a /etc/zabbix/zabbix_agentd.conf file-ban.

  • SourceIP=10.0.0.10 (a MySQL IP címe, amin keresztül fog kommunikálni az agent a szerverrel, ha több IP címmel rendelkezik a monitorozandó szerver, akkor ezt érdemes beállítani a megfelelő címre)
  • Server=10.0.0.1 (a Zabbix szerver IP címe)
  • ListenIP=10.0.0.10 (ezen az IP címen fog kapcsolatokat fogadni a Zabbix agent)
  • Hostname=sql.local (a monitorozandó szerver egyedi neve, célszerű a hostname -f parancs kimenetét beállítani ide, active check esetén fontos)

Ezeken felül számtalan paraméter beállítható, azokat igény szerint finomhangolhatjuk. Miután megvagyunk a konfigurációs file szerkesztésével, engedélyezzük a zabbix-agent boot utáni indulását.

systemctl enable zabbix-agent.service

Monitorozó mysql felhasználó létrehozása

Ahhoz, hogy a Zabbix agent információkat tudjon lekérdezni a MySQL szerverről, szükséges egy erre a célra dedikált felhasználó létrehozása a megfelelő jogosultsággal. Ehhez lépjünk be root felhasználóval a MySQL adatbázisba és hozzuk létre a zabbixmonitor felhasználót kellő erősségű jelszóval.

mysql -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> GRANT USAGE ON *.* TO 'zabbixmonitor'@'localhost' IDENTIFIED BY '****************';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
mysql> exit
Bye

Ez után a Zabbix agent ezzel a zabbixmonitor felhasználóval lokálisan képes lesz csatlakozni a MySQL szerverhez. Ezt célszerű letesztelni, mielőtt tovább haladnánk.

# mysql -u zabbixmonitor -h localhost -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

mysql> exit
Bye

Látszik, hogy a zabbixmonitor nem fér hozzá a MySQL szerverek adatbázisaihoz. Erre nincs is szüksége!

.my.cnf file létrehozása a megfelelő tartalommal

Szükséges egy file, amiből tudni fogja a Zabbix agent, hogy az adatbázishoz milyen felhasználóval és jelszóval tud csatlakozni. Alap esetben ezt a /var/lib/zabbix könyvtár alatt keresi .my.cnf néven. Ez módosítható a userparameter_mysql.conf file-ban! Ez a könyvtár vélhetően nem létezik a rendszerben, az agent csomag telepítője nem hozza létre. Amennyiben ez nekünk megfelel, hozzuk létre a könyvtárat, állítsuk be a megfelelő jogosultságot rá (csak a zabbix nevű felhasználó tudjon belépni, mert érzékeny információkat tartalmaz majd a .my.cnf!).

mkdir --mode=0600 /var/lib/zabbix
chown zabbix:root /var/lib/zabbix

Ez után hozzuk létre a .my.cnf file-t a megfelelő tartalommal.

echo "
[mysql]
user=zabbixmonitor
password=****************
[mysqladmin]
user=zabbixmonitor
password=****************" | tee /var/lib/zabbix/.my.cnf

chown zabbix:root /var/lib/zabbix/.my.cnf
chmod 0400 /var/lib/zabbix/.my.cnf

A password paraméternek a korábban megadott jelszót adjuk meg.

userparameter_mysql.conf file

A 3.4.x verzió Zabbix agent csomag tartalmazza a /etc/zabbix/zabbix_agentd.d könyvtár alatt a userparameter_mysql.conf file-t. Ha belenézünk a file-ba, akkor találni fogunk benne egy definiált HOME változót, ami a /var/lib/zabbix értéket kapja. Ez az az útvonal, ahol a Zabbix agent a .my.cnf file-t fogja keresni. Itt kell módosítani, ha nekünk nem felel meg az alapértelmezett útvonal és értelemszerűen az új könyvtárba kell létrehozni a .my.cnf file-t. Ebben a userparameter file-ban vannak definiálva azok a parancsok, melyeket a Zabbix agent fog futtatni a monitorozás érdekében. Természetesen ide bármilyen egyéb parancsot is felvehetünk, de ennek bemutatása nem célja ennek a cikknek. Így ide most az alapértelmezett file tartalmát fogom beilleszteni.

# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V

Ezzel a monitorozandó szerver készen áll arra, hogy a Zabbix szerveren ráhúzhassuk a Template DB MySQL template-et a monitorozandó host-ra.

Szólj hozzá!

Legyél te az első hozzászóló!

Hozzászólás

wpDiscuz