A Monit figyeli, hogy a szolgáltatások futnak-e, és felhozza őket, ha leállnak. Az első helyénvaló kérdés: minek ez, ha a systemd ugyanezt tudja egyetlen Restart=always sorral?
A válasz meghatározza az egész beállítást. A systemd látja, hogy a folyamat véget ért, és újraindítja. Azt nem tudja, hogy a szolgáltatás válaszol-e a kérésekre. A folyamatkorlátba ütközött PHP-FPM a systemd számára él és virul, a webhely pedig eközben 502-t ad vissza. A helyhiányba futott MySQL folyamatként továbbra is fut, és egyetlen lekérdezést sem hajt végre. A Monit nem a folyamat létét ellenőrzi, hanem a viselkedését: válaszol-e a port, mit ad vissza egy HTTP-kérés, mennyi memória van lefoglalva.
Innen a szabály: a systemd marad úgy, ahogy van, a Monitot pedig a funkcionális ellenőrzésekért adjuk hozzá. A leállt folyamat újraindítását megkettőzni értelmetlen.
Beállítás
sudo apt install monit
A fő fájl az /etc/monit/monitrc, a saját ellenőrzéseket külön fájlokként az /etc/monit/conf.d/ könyvtárba tesszük. A kezdet a szokásos:
set daemon 60
set logfile /var/log/monit.log
set mailserver localhost
set alert admin@example.com
A percenkénti lekérdezés észszerű egyensúly. A sűrűbb terhelést ad hozzá, és növeli a másodperces késés miatti téves újraindítás kockázatát.
Webfelület: csak helyben
A Monitnak van beépített weboldala, és alapból nagyjából úgy kapcsolják be, ahogy az első fellelt útmutató mutatja — minden címen. Az eredmény a szerver szolgáltatásainak vezérlőpanelje, elérhetően az internetről. A helyes változat:
set httpd port 2812 and
use address localhost
allow localhost
allow admin:'hosszu-jelszo'
A kívülről való hozzáférés SSH-alagúton keresztül:
ssh -L 2812:localhost:2812 user@203.0.113.25
Ezután az oldal a saját gépeden nyílik meg a localhost:2812 címen, kifelé pedig semmi nem áll ki.
Ellenőrzések, amelyeknek van értelmük
A webszerver — nem a folyamat léte alapján, hanem a válasz alapján:
check process nginx with pidfile /run/nginx.pid
start program = "/bin/systemctl start nginx"
stop program = "/bin/systemctl stop nginx"
if failed host 127.0.0.1 port 80 protocol http
request "/" status = 200
for 3 cycles then restart
if 3 restarts within 10 cycles then unmonitor
Három sor itt fontosabb a többinél.
protocol http ... status = 200 — éppen ez az az ellenőrzés, amiért az egészet elkezdtük: a szervernek oldalt kell visszaadnia, nem csak nyitva tartani egy portot.
for 3 cycles — ne reagálj egyetlen hibára. Enélkül a Monit egyetlen lassú válasz miatt indítja újra a szolgáltatást terhelés alatt, amivel csak ront a helyzeten.
if 3 restarts within 10 cycles then unmonitor — kötelező sor. Ha a szolgáltatás konfigurációs hiba miatt nem áll fel, a Monit a végtelenségig újraindítja, terhelést ad hozzá és megtölti a naplókat. Ez a sor azt jelenti: három sikertelen kísérlet — állj le, és hagyj üzenetet. Onnantól ember kell, az automatika már nem segít.
A lemezterületet mindenféle automatika nélkül, egyszerű üzenettel ellenőrizzük:
check filesystem rootfs with path /
if space usage > 85% then alert
if inode usage > 85% then alert
Az inode-okról szóló sor külön kell: azok a helytől függetlenül fogynak el, és nélküle ez a helyzet észrevétlen marad.
A konfiguráció ellenőrzése
sudo monit -t
sudo systemctl reload monit
sudo monit summary
sudo monit status
A monit -t alkalmazás előtt ellenőrzi a szintaxist. A monit summary rövid állapottáblát ad — bármely probléma elemzését ezzel érdemes kezdeni.
És ellenőrizd a levélküldést. A Monit levélben jelzi az eseményeket, és ha a küldés nincs beállítva, nem lesz értesítés — a szolgáltatás újraindul, te pedig nem tudsz róla, márpedig éppen az ismétlődő újraindítások jelentik a fő jelzést. Ezek a naplóban is látszanak: /var/log/monit.log.
Amit a Monit nem tesz meg
Nem szünteti meg az okot. Az újraindítás haladék, és egy folyamatosan újraindított szolgáltatás azt jelenti, hogy valahol nincs elég memória, fogy a hely, vagy szivárog az alkalmazás. Az eszköz értéke nem magában az újraindításban van, hanem a számlálóban: az nginx napi három újraindítása olyan diagnózis, amely másképp észrevétlen maradt volna, mert a webhely mindvégig működött.
Ezért nem az aktuális állapotot kell nézni (az szinte mindig zöld), hanem az előzményeket: hányszor állt fel magától valami egy hét alatt. Hogy néz ki ez egyetlen oldalon, azt az alábbi bemutató mutatja.