Akik nem ismerik a LibreELEC-et, azoknak egy mondatban bemutatom: a LibreELEC egy Linux alapú OS, ami csak a minimális szoftvereket tartalmazza, ami a kodi futtatásához kell. A kodi pedig egy szuper kis média lejátszó alkalmazás 😉
A „minimál jellege” egyben hátrány is tud lenni, ugyanis nincs hagyományos csomagkezelője, így nem lehet rá zabbix agentet telepíteni. Természetesen az emberek 99,9 %-nak semmi szüksége arra, hogy monitorozza a lejátszóját. Nekik nem kell tovább olvasni 🙂
Aki hozzám hasonló kocka, az jó helyen jár.
Tudjuk, hogy a zabbix agent nem játszik, nincs rajta SNMP sem (bár ez állítólag felhekkelhető), viszont gyárilag van rajta egy ssh daemon! Emlékeim szerint alapértelmezetten nem fut, de a kodi beállításainál könnyen el lehet indítani.
A sztenderd 22-es tcp porton figyel, az alapértelmezett felhasználónév „root”, és ha nem cseréled le a jelszót a kodiban, akkor az „libreelec” lesz.
Mi kell a monitorozásához?
Egy jó kis templét 😉
A zabbix 2.0-val jelent meg az „SSH agent” típus, pont erre lesz szükségünk.
Így néz ki egy konkrét item:
A csillaggal jelölt mezők kitöltése kötelező, a többi opcionális. Nézzük meg egyesével:
- Name: nevezzük el
a gyereketaz itemet - Type: SSH agent (erről szól a cikk)
- Key: ssh.run[valami,,{$SSH.PORT}] (ahol a „valami” bármi lehet, csak egyedi legyen, érdemes beszédes rövidítést adni neki, pl: mem_total)
- Type of information: az eredménytől függően lehet: numeric (unsigned és float), character, log és text típusú
- Authentication method: Password vagy Public key (most jelszót fogunk használni)
- User name: {$SSH.USER} (konkrét felhasználó nevet is írhatsz, de sokkal szebb, ha egy változót használsz erre, zabbix terminológiában makrót)
- Password: {$SSH.PWD} (konkrét jelszót is írhatsz, de sokkal szebb, ha egy változót használsz erre, zabbix terminológiában makrót)
- Executed script: ez a legfontosabb, az ide írt parancsnak a kimenetét fogjuk eltárolni és feldolgozni, tulajdonképpen erre vagyunk kíváncsiak, a példánkban a memória mérete
- Units: mértékegység – ha van- például: B, %, bps
- Update interval: 1h (a lekérdezések ütemezése, itt 1 óra, ha csak számot írunk, az másodpercet fog jelenteni)
- Custom intervals: ezt nem használom semmire
- Timeout: Global (ebben az esetben központilag szabályozható az ssh agent timeout-ja, Override esetén pedig itemenként tudjuk állítani)
- History: a mért értékek tárolását szabályozhatjuk, a beállított napig változatlanul megtartja (sűrű lekérdezéseknél sok helyet foglal)
- Trends: a mért értékek tárolását szabályozhatjuk, a beállított napig megtartja az átlagolt értékeket, így helyet takarít meg az adatbázisban
- Value mapping: arra való, hogy ha egy lekérdezés eredménye egy szám lesz, akkor azt behelyettesíthetjük egy szóval a könnyebb érthetőség kedvéért
- Populates host inventory field: szükség esetén az inventory kiválasztott mezőjét tölti fel a lekérdezés eredményével
- Description: 1-2 mondattal leírhatjuk, mire szolgál az itemünk
- Enabled: ezt ugye nem kell magyaráznom? 😀
A Tags fülön adhatunk címkéket, később lehet ezekre szűrni.
A Preprocessing steps fülön lehet átalakítást végezni a mért értéken, mielőtt az eredményét eltárolnánk az adatbázisba. A példánkban 1024-el fogjuk szorozni a mért értéket, ugyanis KB-ban kapjuk meg, és Byte-ra van szükségünk. Ha jól számoltam, 29 különböző konverzió közül választhatunk. Természetesen egy itemhez több preprocessing is tartozhat.
Hogyan csináltam egy egész templétet?
Én még oldscool gyerek vagyok, szóval rágugliztam. És volt is egy jó találat. Egy bizonyos ‘vaniacer‘ nick nevű csávó készített még a zabbix 6.0-hoz egy ssh templétet. Kiindulásnak ez is megtette. A hibáit kijavítottam, és egyesével összevetettem a zabbix 7.0-ban található ‘Linux by Zabbix agent’-el. Minden hiányzó itemet és triggert megcsináltam. Hidd el nekem, ez volt a könnyebb meló. Kb két napig tartott a munka. Aztán elkezdtem a teszteket, csináltam több virtuális gépet:
- Debian 12 x86
- Debian 11 arm
- Fedora 41
- RedHat 8
- RedHat 9
- Ubuntu 20.04
- Ubuntu 22.04
- Ubuntu 24.04
És kiderült, hogy több item is hibás valamelyik OS-en 🙁 Ezek javítása tartott kb egy hétig.
A végeredményt feltöltöttem ide: zabbix_Linux_by_ssh-template.yaml. Letöltés után importáld a zabbix templates oldalán:
Ez egy általános Linuxos templét, nagyjából minden verzión jó lesz. Két függősége van: a sysstat és a python3. Mint megtudtam, a python3 sincs benne minden disztróban alapértelmezetten. Én szándékosan minimál telepítéseket teszteltem. Ha ezt a két csomagot nem telepíted fel, rengeteg mérés hibára fog futni!
A templét 27+2 makróval rendelkezik, ebből nekünk hárommal lesz dolgunk:
- {$SSH.PORT}: ha nem a 22-es porton figyel az ssh szerver, állítsd be a hosztnál
- {$SSH.USER}: ennek nincs default értéke, állítsd be a hosztnál
- {$SSH.PWD}: ennek nincs default értéke, állítsd be a hosztnál
Egyik lekérdezéshez sincs szükség root jogokra, szóval biztonsági okokból NE root felhasználóval csatlakozz, ha van rá lehetőséged, hozz létre egy mezei felhasználót. Sajnos vannak olyan appliance rendszerek, ahol csak a root felhasználó létezik, és nem is lehet másikat létrehozni. Ilyen a LibreELEC is.
Praktikusabb, ha ssh kulccsal csatlakozol a távoli hosztra, ám nem mindegyiknél van lehetőség a publikus kulcsod felmásolására. Ilyenkor marad a felhasználónév/jelszó páros. Többek között ezen okok miatt választottam a templétben ezt a fajta authentikációt.
Ebben a templétben van fájlrendszer és hálózati kártya felfedező mód, hasonlóan a ‘Linux by Zabbix agent’ nevű templétben. Viszont a sysstat csomag által szállított programokat használja, ami nincs a LibreELEC-ben. Emiatt készítettem egy másik templétet, ezt is töltsétek le: zabbix_LibreELEC_by_SSH-template.yaml, majd importáljátok a zabbixotokba.
Ebbe kerültek azok az itemek, amik csak a LibreELEC-en léteznek, és nem kell hozzá a sysstat csomag. Ennek a templétnek csak 3 makrója van:
- {$SSH.PORT}: default: 22
- {$SSH.USER}: default: root
- {$SSH.PWD}: default: libreelec
Ha nem cserélted le az ssh jelszót a kodi felületén, akkor nincs más dolgod. A móka kedvéért cseréljük le 🙂
Jöhet a LibreELEC hoszt hozzáadása
Menjünk a zabbix ‘Data collection -> Hosts’ oldalra, és kattintsunk a ‘Create host’ gombra:
Ennyi, most már hozzáadhatjuk. Persze nálatok biztosan más lesz az IP cím és a jelszó 🙂
Kell pár perc, amíg minden itemet le fog kérdezni, türelem. Az adatok megtekintéséhez navigáljunk a ‘Monitoring -> Latest data’ oldalra, majd írjuk be a gépünk nevét a hoszt mezőbe, végül apply:
Ha mindent jól csináltatok, 54 itemet fog listázni:
Az esetleges hibás lekérdezésekre szűrjünk a „Not supported” gombbal:
Eddig nem jöttem rá, hogy miért csinálja, ha kézzel adom ki az itemben szereplő parancsot, akkor kapok valid eredményt. Mindenesetre, ha rájövök, frissíteni fogom a templétet!
Foglaljuk össze az eddig olvasottakat
- ha egy olyan eszközt szeretnél monitorozni, amin LibreELEC fut, akkor mind a két templétet le kell töltened
- ha nem változtatsz jelszót, akkor nincs további teendőd az alapértelmezett makrók miatt
- ha biztonsági okok miatt – helyesen – lecseréled a jelszót, akkor állítsd be a hosztnál az ‘{$SSH.PWD}’ makrót
- ha egy olyan appliance-et szeretnél monitorozni, ahol nincs lehetőség zabbix agent és SNMP használatára, akkor használd az innen letölthető ‘Linux by SSH’ nevű templétet
- ebben az esetben mindenképpen szükséged lesz az ‘{$SSH.PWD}’ makróra
Még egy apróság! Bár a templéteket zabbix 7.0 alatt készítettem, nyugodtan feltölthetitek mind a 7.2, mind a béta állapotú 7.4-re is. Kipróbáltam, ott is működnek. Régebbi rendszerrel nem próbálkoztam.