Mire jó ez?
Egy valós példával fogom szemléltetni. Az egyik általam üzemeltetett szerveren időnként elfogy a memória, és elkezd a gép swappolni. Természetesen egy idő után ez is elfogy, amiről értesít a zabbix 🙂
Ilyenkor az a megoldás, hogy bejelentkezek a kérdéses szerverre, megnézem, hogy melyik alkalmazás fogyasztja a legtöbb memóriát, majd újraindítom. Ezen a bizonyos szerveren a php-fpm daemon a ludas.
A belépés macera, sudozni kell, pláne macera, ki kell deríteni, hogy ki a hunyó, mondanom se kell, macera, majd újra kell indítani, végül exit, exit, exit, sok sok macera 😀
Ezt mind elkerülhetjük, és csak 2-3 kattintás a zabbix felületén.
A zabbix agent gyári beállítások szerint zabbix felhasználóval fut (és ez jól van így), viszont egy daemon újraindításhoz root jogok kellenek. Ezért eszközölnünk kell pár módosítást.
1, nyissuk meg az /etc/sudoers fájlt szerkesztésre, legegyszerűbb, ha kiadod a $ sudo visudo
parancsot, majd a fájl aljára szúrd be ezt a két sort:
Defaults:zabbix !requiretty
zabbix ALL=NOPASSWD: ALL
2, nyissuk meg az /etc/zabbix/zabbix_agentd.conf fájlt, és szúrjuk be az alábbi két sort az aljára:
EnableRemoteCommands=1
AllowKey=system.run[*]
Már csak újra kell indítani a zabbix agentet:
$ sudo systemctl restart zabbix-agent
A következő lépés, hozzunk létre egy új scriptet. Kezdjük egy ártalmatlannal, ez jó lesz teszteléshez. Navigáljunk a zabbix weboldalán az Alerts -> Scripts oldalra (régebbi verziókban az Administration -> Scripts alatt volt). Jobb felső sarok: Create scipt.
Adjunk neki egy nevet, pl “whoami [sudo teszt]”. A “Scope” legyen ‘Manual host action”, a “Type” pedig “script”. Az “Execute on”-t állítsuk be “Zabbix agent”-re. A “Commands” legyen ez: “sudo /bin/whoami
“. Ennyi már elég is, de azt javaslom, hogy a “Host group”-ot állítsuk be “Selected”-re, és vegyük fel a “Linux servers” csoportot. Egyéb Oprendszereken nem működne. Nálam így néz ki:
Próbáljuk ki!
Menjünk a Monitoring -> Problems oldalra. Válasszunk ki egy Linuxos gépet, kattintsunk a host névre, ott fel fog jönni a korábban felvett “whoami [sudo teszt]” menüpont, kattintsunk rá.
Ha olyan szerveren csináltuk, amit nem készítettünk fel erre, akkor ezt a hibaüzenetet fogjuk kapni:
Ha olyan szerveren csináltuk, amit már felkészítettünk erre, de mégis ezt a hibaüzenetet fogjuk kapni, akkor elfelejtettük kikapcsolni (vagy rendesen beállítani) a selinux-ot:
Ha olyan szerveren csináltuk, amit már felkészítettünk erre, akkor ezt az üzenetet fogjuk kapni:
Működik a teszt script, csináljunk egy igazit!
Menjünk ismét a Scripts oldalra, és hozzunk létre egy újat. Adjunk neki nevet: “Restart php-fpm”, válasszuk ki a “Manual host action” lehetőséget, a típusoknál a scriptet, az “Execute on” maradjon “Zabbix agent”-en. A “Commands” legyen ez: “sudo systemctl restart php-fpm.service
“. Itt is érdemes “Linux servers” csoportra szűrni, sőt, én már felhasználóra is szűrnék, ne futtathassa akárki ezt a scriptet (jelenleg érjük be a Zabbix administrators csoport tagjaival, ami jelenleg az Admin felhasználó). Bónusz lehetőség, lehet egy megerősítő ablakot is feldobatni a futtatás előtt (Enable confirmation / Confirmation text).
Mentés után teszteljük le, a korábbi “Problems” oldalon válasszuk ki a hosztunkat, kattintsunk rá, majd a listából válasszuk ki a “Restart php-fpm” lehetőséget.
Csak a jóváhagyás után (Execute) fut le a parancs:
UI: amikor üres az output ablak, az azt jelenti, hogy nem volt hibaüzenet a parancs végrehajtásakor. Ez a tipikus Linuxos működés.
És készen is vagyunk!
Ennek mintájára bármilyen scriptet le lehet futtatni a megfelelő hosztokon.
Még egy javaslat: én szűkítettem a “Linux servers” csoportot, csináltam egy “sudo” nevű csoportot, és azokat a hosztokat tettem bele, akik fel vannak készítve a jelszó nélküli sudo használatára. Magyarul a scriptjeink csak azokon a hosztokon fognak megjelenni, amelyeket van is lehetősége lefutni…