A Proxmox egy közönséges Debian Linuxra épül, így mindenféle varázslat nélkül tehetünk rá zabbix agentet. Meg is tehetjük, ha a szokásos adatokra vagyunk kíváncsiak, ám a PVE (Proxmox Virtual Environment) nem egy sima Linux szerver. Készült hozzá egy speciális template, ami agent nélküli, http-n keresztül gyűjt adatokat.
Mire lesz szükségünk?
- ha nem lenne a zabbixunk része a „Proxmox VE by HTTP” nevű template, töltsük le innen, elvileg zabbix 6.0-tól felfelé elérhető
- a biztonság kedvéért kell egy olyan felhasználó, akinek csak a létező legkevesebb joga van
- a zabbix szerveren (vagy a proxyjain, ha vannak) kapcsoljuk be a „http pollert”
Kezdjük a zabbixxal
Én a bemutatót 7.0-s zabbixal fogom csinálni, ami konténerben fut, így nem kell közvetlenül a konfig fájlt szerkesztenem, hanem elég egy új változót hozzáadnom a docker-compose.yml fájlomhoz. Mivel nálam zabbix proxyk is futnak, szintén konténerben, azokat is bővíteni fogom.
Nyissuk meg szerkesztésre a docker-compose.yml fájlt, és szúrjuk be az environment szekció alá ezt a sort: „- ZBX_STARTHTTPPOLLERS=1”, íme:
services:
zabbix-server:
container_name: zabbix-server
image: zabbix/zabbix-server-mysql:alpine-7.0-latest
volumes:
- /etc/localtime:/etc/localtime:ro
- ./ssh_keys:/var/lib/zabbix/ssh_keys
ports:
- 10051:10051
restart: always
environment:
- DB_SERVER_HOST=mariadb
- DB_SERVER_PORT=3306
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=***********
- ZBX_STARTPINGERS=3
- ZBX_LISTENPORT=10051
- ZBX_STARTHTTPPOLLERS=1
Mentés után rootként adjuk ki az alábbi parancsot: „docker compose up -d”.
Ha használtok zabbix proxyt, ott is ugyanezt a változót kell hozzáadni az environment alá.
Jöhet a template. Nyisd meg a „Data collection -> templates” menüpontot, és a name mezőbe írd be a proxmox szót, majd „apply”. Ha már van templated, itt fogod látni:
Ha nincs, innen letöltheted, majd jobb felül „Import”, kitallózod a fájlt, és megint „import”:
Most menjünk a „Hosts” menüpontra (eggyel lejjebb van), és adjunk hozzá egy új gépet a jobb felső „Create host” gombra kattintva.
Adjatok nevet a gépnek, és mivel kötelező legalább egy csoportba betenni, javaslok egy Proxmox nevű csoportot létrehozni. Ha nincs ilyenetek, nem kell aggódni, csak be kell írni, és rákattintani az alatta felbukkanó kék csíkban a „Proxmox new”-ra. Így:
A legfontosabbat ne felejtsük el, adjuk hozzá a „Proxmox VE by HTTP” nevű templatet!
Még nem végeztünk, kattintsunk a „Macros” menüpontra, és az alsó „Add” linkre:
Adjunk hozzá 3 makrót (változót), a proxmox szerverünk IP címét (vagy host nevét), a felhasználót, és a felhasználó tokenét: {$PVE.URL.HOST}, {$PVE.TOKEN.ID}, {$PVE.TOKEN.SECRET}
, a felhasználó ez legyen: zabbix@pve!zabbix
, a tokent itt még nem ismerjük, így tegyük félre a zabbixot egy időre. Itt tartunk most:
Most lépjünk be a Proxmox webes felületére, és menjünk a „Datacenter -> Permissions -> Groups” menüre. Nyomjuk meg a „Create” gombot, csináljunk egy zabbix csoportot:
Most menjünk az „Users” menüpontra, és kattintsunk az „Add” gombra. Töltsük ki a megfelelő mezőket, fontos, hogy a „Realm” mezőben a „Proxmox VE authentication server”-t válasszuk, hiszen ez egy olyan felhasználó lesz, aki nem létezik a Debian OS-en:
Most mehetünk az „API Tokens” menüpontra, és kattintsunk az „Add” gombra, válasszuk ki a korábban létrehozott zabbix felhasználót:
Miután megnyomtuk a kék „Add” gombot, megmutatja nekünk a tokent:
A „Secret” mező tartalmát másoljuk be a zabbix hostunk megfelelő makró mezőjébe:
Most már megnyomhatjátok az „Add” gombot.
Nézzük meg, mire jutottunk, menjünk a zabbixban a „Monitoring -> Latest data” menüpontra, válasszuk ki a gépünket, majd „Apply”, javaslom, hogy szűrjünk a „With data”-ra:
Ha jól dolgoztunk, az „API service status” értéke 200 lesz.
Kérdezhetitek, hogy miért csak egy értéket látunk? Mivel semmilyen jogot nem adtunk a zabbix felhasználónak a Proxmox alatt:
Itt az idő, hogy a szükséges jogokat megadjuk
A zabbix template leírásában látszik, hogy milyen jogokra van szükség:
- Check: [„perm”,”/”,[„Sys.Audit”]]
- Check: [„perm”,”/storage”,[„Datastore.Audit”]]
- Check: [„perm”,”/vms”,[„VM.Audit”]]
A Proxmoxban van egy csomó előre definiált „Roles”, ám pont ilyen minimális nincs 🙁
Nosza csináljuk hármat is. Kattintsunk a Create gombra, és állítsuk be így a három role-t:
Meg is jelentek a lista alján:
Következő lépésként menjünk a „Permissions” menüre, és nyomjuk meg az „Add” gombot, hozzunk létre 3 bejegyzést (mindhármat csoport szinten):
Íme a teljes lista:
Majdnem kész vagyunk. Ám hiába adtunk jogokat a zabbix csoportnak, a token ezt nem örökli, amíg ki nem vesszük a pipát a „Privilige Separation” négyzetből:
Máris megkapta a jogokat a zabbix tokenünk:
Lépjünk át a zabbixba, és ha mindent jól csináltatok, megjelent egy csomó adat:
Kezdetben 18 adatot kapunk, majd idővel jön a többi is, pár perc múlva nálam már 49 adat látható.
A zabbix ezen template-je „discovery” módban rendszeres időközönként lekéri a Proxmoxtól a Storage adatait és a VM/LXC gépek adatait. Így a látható bejegyzések mennyisége ennek függvényében fog nőni, esetleg csökkenni. Egy storage 4 bejegyzést, egy VM/LXC 9 bejegyzést tartalmaz.
Bónusz infó a végére
Ha több Proxmox szerverből készítünk egy clustert, akkor a zabbix az összes node adatait látni fogja, hiszen nem a node-on (szerver) hoztuk létre a felhasználót, hanem a datacenterben.