Szerver monitorozása a Monit segítségével Debian és Ubuntu rendszereken

botond küldte be 2023. 01. 26., cs – 02:06 időpontban

Tartalom

 

Az 1. oldal tartalma

 

Bevezető

A Monit egy ingyenes és nyílt forráskódú folyamat- és erőforrásfigyelő eszköz, amely a rendszerfolyamatok és erőforrások - webböngésző és parancssor segítségével történő - megfigyelésére használható. A Monit automatikusan leállítja vagy újraindítja a folyamatokat vagy szolgáltatásokat, amennyiben azok például túl sok erőforrást használnak fel, vagy rendellenesen működnek. A különböző eseményekről email-es riasztásokat is küld.

Ebben a leírásban kétféle forgatókönyvet nézünk át:

 

 

Monit telepítése

Ezt a friss Monit telepítést tehát a Debian 10 (Buster) tökéletes szerver 1.1-es (VirtualBox) változatán végzem el, ahol már van jónéhány működő szolgáltatás, amit monitorozhatunk, valamint ezen a szerveren - az ISPConfig által kezelt - self-signed SSL is rendelkezésre áll, így ezt fel is tudjuk használni a Monit számára. A leírás utolsó szakaszában pedig az éles szerveren lévő Let's Encrypt által kiállított érvényes SSL-t fogjuk ugyanígy felhasználni a Monit számára.

Csomagok frissítése

Először frissítsük (root-ként) a csomagtár adatbázisunkat és csomagjainkat:

apt-get update
apt-get upgrade

Telepítés és állapot lekérdezés

Telepítsük a Monit-ot:

apt-get install monit

Állapot lekérdezése:

systemctl status monit

Monit állapot - Aktív

 

Monit konfigurálása friss telepítés után

A Monit fő konfigurációs fájlja a /etc/monit/monitrc. Ebben van sok alapbeállítás, amiknek egy része aktív, és vannak kikommentezett beállítások is, amik mintának szolgálnak. Ahogy a legtöbb programnál, így a Monit esetén is vannak konfigurációs alkönyvtárak ahonnan beolvassa az egyedi konfigurációs fájlokat. így a fő konfig fájl helyett ezekben a könyvtárban ajánlott elhelyezni a saját konfigurációinkat - érintetlenül hagyva az eredeti konfig fájlt -, amiben az alapbeállításokat is felülbírálhatjuk. Ezek a beolvasásra kerülő könyvtárak a /etc/monit/nonitrc fájl legvégén vannak meghatározva az include részeknél.

Konfigurációs könyvtárak áttekintése

A Monit 4 konfigurációs alkönyvtárral rendelkezik, ezeknek a működése és felhasználása a kövezkező:

  • /etc/monit/conf-available/: Elérhető beállítások könyvtára. Ebben a könyvtárban vannak a Monit által figyelni kívánt szolgáltatások és erőforrások beállításai, illetve itt szokás újabbakat is létrehozni. A Monit ezt a könyvtárat közvetlenül nem olvassa, így amik ebben vannak csak az enabled könyvtárba történő átlinkelés után lesznek aktívak. Tehát ez egy amolyan tartalék beállításokat tároló könyvtár, mint például az Apache esetén is a conf-available, mods-available, és a sites-available könyvtárak.
  • /etc/monit/conf-enabled/: Aktív, engedélyezett beállítások könyvtára. Ebbe kerülnek azok a beállítások, amiket a Monit beolvas (a monitrc fájl végén lévő include sorban). A könyvtárat úgy szokás használni, hogy az engedélyezni kívánt beállításokat szimbolikus linkek segítségével linkeljük ide a conf-available/ könyvtárból.
  • /etc/monit/conf.d/: A Monit ezt a könyvtárat is beolvassa (szintén a monitrc fájl végén lévő include részben), de ebben alapból nincs semmi. Ebből adódóan ha ide rakunk beállításokat, azok is aktívak lesznek.
  • /etc/monit/monitrc.d/: Ennek a könyvtárnak a beolvasása alapból nincs bekapcsolva, így a benne lévő fájlok nem aktívak. Alapból van benne egy fail2Ban beállítófájl. Ha használunk Fail2Ban programot, akkor akár be is kapcsolhatjuk egy conf-enabled/ könyvtárba történő átlinkeléssel, vagy beolvastathatjuk a monitrc fájl végén ezt a könyvtárat is egy újabb include sorral, stb.

Tehát a lényeg, hogy a konfigurációs könyvtárak közül a conf-available/ és a conf-enabled/ könyvtárakat használjuk, a másik kettővel nem foglalkozunk.

Webes felület beállítása

A Monit rendelkezik egy saját webes felülettel, ahol a böngészőből is nyomon követhetjük a rendszer részletes állapotát.

Ezt a webes felületet a Monit nem az Apache segítségével, hanem a saját beágyazott webkiszolgálójával jeleníti meg, amit a háttérben futó daemon-jával valósít meg. Ennek annyi jelentősége van, hogy emiatt nem lehet a hagyományos Apache által figyelt portokra állítani ezt a webes felületet - mint például a 80, 443, 8080, 8081-es portokra, ahol jelenleg az Apache kiszolgálja a kéréseket -, hanem egyedi portra kell bekonfigurálni.

A webes felület engedélyezéséhez hozzunk létre egy új fájlt mondjuk a /etc/monit/conf.d/ könyvtárban:

Ezt a fájlt akár a conf-available/ könyvtárban is létrehozhatjuk, ha utána átlinkeljük a conf-enabled/ könyvtárba. Az ISPConfig automatizált telepítője például az utóbbi megoldást alkalmazza. Ennek kiválasztása tehát ránk van bízva. Én itt most csak példaként hozom itt létre.
nano /etc/monit/conf.d/web-interface

És tegyük bele az alábbi tartalmat:

set httpd port 2812 and
    SSL ENABLE
    PEMFILE /etc/monit/ssl/ispserver.pem
    allow admin:abc123

Ahol a sorok jelentése a következő:

  • set httpd port 2812 and: A webes elérés a 2812-es porton történik (A Monit alapértelmezett portja).
  • SSL ENABLE: Mivel az ISPConfig szerveren már HTTPS átirányítás van érvényben, ezért csak HTTPS-en keresztül tudjuk elérni ezt a felületet
  • PEMFILE: Itt adjuk meg a PEM fájlt, ami tartalmazza az SSL tanúsítványt. Az itt megadott fájl még nem létezik, ezzel kicsit barkácsolnunk kell ezután...
  • allow <felhasználó>:<jelszó>: Itt adjuk meg a HTTP hitelesítéshez az admin felhasználót, és hozzá a jelszót. Itt beállíthatunk egyebet is.

Ha ez megvan mentsük le.

SSL beállítása

A Monit-nak többféle formátumban is meg lehet adni az SSL-t, amik közül a legkényelmesebb talán a PEM fájl használata, mivel csak egy fájllal kell foglalkoznunk. Ez még azért is előnyös, mert az ISPConfig előállítja ezt nekünk a .key és a .crt fájlok összefűzésével. Illetve a régebbi Tökéletes szerver telepítések esetén még nekünk kellett elkészíteni ezeknek az SSL-eknek az átláncolását, összefűzését, valamint a megújító scriptjét, az újabb ISPConfig telepítésekben ez már beépítésre került. A lényeg, hogy az ISPConfig rendelkezik az itt szükséges .pem formátummal, amit időről időre meg is újít nekünk.

Mindez túl szép is lenne, ha ezt a /usr/local/ispconfig/interface/ssl/ispserver.pem fájlt egy az egyben meg lehetne ezt adni a Monit konfigurációjában. Illetve meg is lehet, de ha direktben beállítjuk neki, majd újraindítjuk a monit paranccsal a szolgáltatást:

monit reload

akkor az alábbi hibát dobja:

The SSL server PEM file '/usr/local/ispconfig/interface/ssl/ispserver.pem' permission 0750 is wrong, maximum 0700 allowed
/etc/monit/monitrc:308: SSL server PEM file permissions check failed ''

Monit - SSL permission hiba

Itt most a példa kedvéért kikommenteztem a fenti beállítást, és átmenetileg betettem direktben az ISPConfig .pem fájlját, hogy láthassuk a hibát. A fájl jelenlegi jogosultsága 0750, de a Monit maximum 0700-at enged meg.

Emiatt a kis apróság miatt lesz még ezzel dolgunk, de most egyelőre csak annyit csinálunk, hogy átmásoljuk a Monit számára ezt a .pem fájlt, és átállítjuk a jogosultságát, és elindítjuk vele a Monit webes felületét.

Ennek megfelelően most hozzunk létre egy könyvtárat és lépjünk is bele:

mkdir /etc/monit/ssl
cd /etc/monit/ssl

Ebbe másoljuk át a szóban forgó PEM fájlt, és állítsuk be a jogosultságát:

cp /usr/local/ispconfig/interface/ssl/ispserver.pem .
chmod 700 ispserver.pem

Ezután töltsük újra a Monit konfigurációkat:

monit reload
Az SSL-t a rendszerben működő ACME kliens 3 havonta (pontosabban az utolsó megújítástól számítva 3 hónapon belül) ismét megújítja, ami az itt átmásolt PEM fájlra viszont már nem igaz, ezért ezt kézzel kellene minden alkalommal átmásolnunk, és újra beállítanunk a fájl jogosultságát is. A leírás végén, a függelékben megoldjuk ennek a problémának az automatizálását is, hogy ne kelljen többé foglalkoznunk vele, de itt viszont most haladunk tovább.

Ha a monit nem adott hibát, akkor meg is tekinthetjük a webes felületet.

 

 

Webes felület áttekintése

Töltsük be a böngészőben a monit címét, ami nálam a Debian 10-es virtuális gépen az alábbi:

https://debian10.linuxportal.vm:2812/

Itt bekéri a HTTP hitelesítési adatokat:

Monit - HTTP hitelesítés

adjuk meg a konfigurációban beállított felhasználót és jelszót, majd bejön a Monit kezdőoldala:

Monit - Kezdőoldal

Itt még csak egy alap CPU, memória és swap fájl kijelzés van. Ha rákattintunk a System oszlopban a szerverünk hosztnevére (nálam a debian10), akkor bejön a rendszer általános állapot oldala:

Monit - System status

Amint láthatjuk, a Monit még nagyon alap állapotban van, tehát a következő dolgunk, hogy beállítsuk a különböző erőforrások figyelését, limit értékeket, és a limitek elérésekor aktiválni kívánt műveleteket, értesítéseket, stb.

 

Szolgáltatások és erőforrások beállítása

Ebben a részben átnézünk - a teljesség igénye nélkül - néhány fontosabb monitorozni kívánt szolgáltatást és erőforrást. A Monit conf-available könyvtára már alapból tartalmaz néhány előre elkészített beállítást, amit kiegészíthetünk a Monit hivatalos oldalán található beállítási példákkal.

Az itt következő példákban szereplő konfigurációs fájlneveket én is úgy hozom létre, ahogy majd a második forgatókönyvben szereplő, már előre telepített Monit példányban is szerepelnek. Így nem kell kétszer külön leírni a beállítások menetét, hanem majd csak visszahivatkozom ezekre a részekre.

Rendszererőforrások

Itt a rendszererőforrások limitértékeit állítjuk be, amik tartalmazzák a load, memória, CPU és a swap értékek figyelését.

Hozzuk létre a következő fájlt:

nano /etc/monit/conf-available/resources

És tegyük bele az alábbi tartalmat:

check system $HOST
    if loadavg (5min) > 4 then alert
    if loadavg (15min) > 2 then alert
    if memory usage > 80% for 4 cycles then alert
    if swap usage > 60% for 6 cycles then alert
    # Test the user part of CPU usage
    if cpu usage (user) > 40% for 6 cycles then alert
    # Test the system part of CPU usage
    if cpu usage (system) > 20% for 6 cycles then alert
    # Test the i/o wait part of CPU usage
    if cpu usage (wait) > 40% for 4 cycles then alert
    # Test CPU usage including user, system and wait. Note that
    # multi-core systems can generate 100% per core
    # so total CPU usage can be more than 100%
    if cpu usage > 200% for 4 cycles then alert

Itt egy if-then szerkezetes struktúrát láthatunk, amiben sokféleképpen adhatunk meg limit értékeket és az értékek elérésekor bekövetkezendő feladatokat.

A pontos értékeket mindenki egyénre szabottan állítsa be, figyelembe véve szervere erőforrásait, teljesítményét és átlagos terhelését. Ezek itt tehát csak iránymutató mintaértékek. Állítsuk be úgy ezeket, hogy először elindulunk egy alacsonyabb, szigorúbb beállításokkal, majd kis ideig figyelve a rendszert az értesítések függvényében "lazítunk" ezeken az értékeken, míg végül elérjük az optimális beállításokat.

Például egy 4 CPU maggal rendelkező szerver esetén más loadavg, illetve cpu usage értékeket kell megadni, mint egy 8 CPU maggal rendelkező szerver esetén. Vagy például egy 4 GB RAM-al rendelkező konfiguráció esetén is más értékeket kell beállítani, mint egy 8 GB RAM-al rendelkező gép esetén, stb. Továbbá figyeljük az általános terheltségi szinteket is.

Az itteni beállításoknak tehát az a célja, hogy ráillesszük őket szerverünk átlagos működésére, és csak az attól eltérő terhelési "tüskék" esetén kapjunk riasztásokat, hogy akkor ellenőrizni tudjuk a telhelési csúcsok / rendellenes működés okait, stb. Ezekre ráérzünk majd, amikor jönnek az email értesítések, és látni fogjuk, hogy saját szerverünk esetén milyen értékek számítanak normálisnak, vagy éppen extrémnek.

Ha lementettük a fájlt a kezdeti beállításaink után, akkor kapcsoljuk is be, amit az erre a beállításra mutató conf-enabled könyvtárban elhelyezett szimbolikus linkkel tehetünk meg:

ln -s /etc/monit/conf-available/resources /etc/monit/conf-enabled/resources

Ezután töltsük újra a Monit konfigurációkat:

monit reload

Ha minden rendben, akkor csak ennyi kimenetet kapunk:

Reinitializing monit daemon

Ezután lépjünk ismét vissza a böngészőbe a Monit felületére, majd újra nyissuk meg a System alatti hosztnevet tartalmazó sor linkjét, mint korábban:

Monit - Rendszererőforrások figyelése beállítva

Összehasonlítva a korábbi állapottal, itt az alsó részen megjelenik egy szürke rész, ahol viszont láthatjuk beállításainkat. Innentől kezdve tehát a rendszer küldi a riasztásokat, amennyiben eléri valamelyik határértéket.

A rendszererőforrások további beállításairól itt tájékozódhatunk. Például kiterjeszthetjük ezeket a beállításokat asztali gépes használatra is, amennyiben grafikus asztalkörnyezetet használunk, stb.

Arra figyeljünk még, hogy ha módosítjuk a konfigurációs fájlokat, utána minden esetben töltsük újra a Monit konfigurációt a "monit reload" paranccsal.

 

 

Apache

Az Apache webkiszolgáló monitorozásához a Monit már tartalmazza a konfigurációs fájlt, nyissuk ezt meg:

nano /etc/monit/conf-available/apache2

Ami alapból az alábbiakat tartalmazza:

check process apache with pidfile /var/run/apache2/apache2.pid
    group www
    group apache
    start program = "/etc/init.d/apache2 start"
    stop program  = "/etc/init.d/apache2 stop"
    if 4 restarts within 20 cycles then timeout
    if failed host localhost port 80 with protocol http and request "/server-status" with timeout 25 seconds for 4 times within 5 cycles then restart
    depend apache_bin
    depend apache_rc

check file apache_bin with path /usr/sbin/apache2
    group apache
    include /etc/monit/templates/rootbin

check file apache_rc with path /etc/init.d/apache2
    group apache
    include /etc/monit/templates/rootbin

Összehasonlításképpen az ISPConfig automatizált telepítőjével telepített szerver változatban ugyanez a konfig fájl az alábbiakat tartalmazza:

check process apache with pidfile /var/run/apache2/apache2.pid
    group apache
    start program = "/usr/bin/systemctl start apache2" with timeout 60 seconds
    stop program  = "/usr/bin/systemctl stop apache2"
    if failed port 80 protocol http then restart
    if failed port 443 then restart
    if 5 restarts within 5 cycles then timeout
    depend apache_bin
    depend apache_rc

check file apache_bin with path /usr/sbin/apache2
    group apache
    include /etc/monit/templates/rootbin

check file apache_rc with path /etc/init.d/apache2
    group apache
    include /etc/monit/templates/rootbin

Van némi különbség. Például az utóbbi fájl a régebben használt /etc/init.d/ indító/leállító scriptek helyett a systemctl-t használja, valamint figyeli a 443-as (HTTPS) port működését is. Továbbá az első fájl a /server-status szerver állapot lekérdezéssel vizsgálja a működést, amiről korábban már itt esett szó egy másik beállítás kapcsán.

Itt eldönthetjük, hogy megtartjuk-e a "gyári" Monit Apache beállításokat, vagy ha ISPConfig alapú rendszert használunk, akkor az ISPConfig-osok által összeállított beállításokat vesszük át. Én az utóbbit javasolnám, ha már egyszer a kezelőpanel vagy a telepítő script készítői ezt így elkészítették, tehát részemről kicserélem a másodikra a konfig fájl tartalmát.

Ezután kapcsoljuk be a beállítást a már ismert módon és töltsük újra a konfigokat:

ln -s /etc/monit/conf-available/apache2 /etc/monit/conf-enabled/apache2
monit reload

Ezután frissítsünk rá a webes felület főoldalára:

Monit főoldal - Apache részek

Itt megjelent a "Process" rész, ahol már van egy "apache" sorunk, valamint a "File" rész is előkerült a két figyelt Apache fájllal. Itt láthatjuk az Apache összesített adatait, de ha rákattintunk az "apache" linkre a "Process" szekcióban, akkor több adatot is láthatunk az Apache vonatkozásában:

Monit részletek - Apache

Monit részletek - Apache

Itt is az alsó szürke sorok tartalmazzák a beállított eseményeket. Itt már nem csak alert-ek vannak, hanem például ha a 5 másodpercig nem éri el az Apache 80-as vagy 443-as portjait, akkor újraindítja a webkiszolgálót. Valamint ha ez megismétlődik 5 cikluson keresztül, akkor pedig leállítja a monitorozást. Ilyenkor is küld természetesen értesítést minden eseményről, tehát ha valamilyen okból ilyen történne, akkor utána kell járni a problémának.

Nálam például az éles szerveren ha valamiért újraindítom az Apache-ot, akár kézzel, akár az ISPConfigban módosítok valamit, ami újraindítja azt, a Monit már jelez is hogy nem éri el (több weboldal, sok konfig esetén gyakran átlépi az 5 másodpercet az Apache újraindítása). Majd az újraindulást követően már jön is a következő email, hogy helyreállt a kapcsolat. Hasznos dolog, pláne, ha nincs gép előtt az ember, és a mobiltelefonra jönnek az értesítések (ilyenkor például vásárlás közben izgulhat az ember, hogy mi lehet a szerverrel. :D ).

 

 

MySQL/MariaDB

Mint tudjuk, a Debian a 9 (Stretch) változata óta áttért a MariaDB alapértelmezett használatára a MySQL helyett. Az áttérés transzparens módon történt, a kompatibilitás megőrzése végett továbbra sem szűntek meg a rendszerben a MySQL-re vonatkozó elnevezések, de ezek már valójában a MariaDB-re történő hivatkozások. Ennek nyomaival még a Debian 11 rendszer több részében is találkozhatunk.

Nincs ez másképpen a Monit konfiguráció esetén sem, ahol a friss telepítéskor az alapértelmezetten létrejövő MySQL-t monitorozó konfigurációs fájl a /etc/monit/conf-available/mysql. Az automatizáltan telepített szerver változatban ehhez nem is nyúltak hozzá, hanem készítettek emellett egy mariadb nevű konfigurációs fájlt is, amiben minimális eltérés mutatkozik.

Ezek között a konfigurációk között mindössze annyi a különbség, hogy a mariadb változatban a konfiguráció a /usr/sbin/mariadbd bináris fájlra hivatkozik, míg az itt bekapcsolásra kerülő mysqld konfiguráció pedig az ugyanerre a bináris fájlra mutató /usr/sbin/mysqld szimbolikus linkre hivatkozik. Valamint itt is az indító parancsoknál van még eltérés (/etc/init.d és a systemctl). Így lényegében teljesen mindegy melyik konfigurációt kapcsoljuk be, ugyanazt a szolgáltatást jelöli mindkettő.

Mivel ebben a fejezetben elsősorban a frissen telepített Monit utáni beállításokat tárgyaljuk, ezért itt a Monit alapértelmezett mysql fájlját fogjuk használni.

Itt tehát ezzel most nincs dolgunk, csak hogy előttünk legyen hogy miről is van szó, bemásolom az eredeti mysql konfig tartalmát:

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
    group database
    group mysql
    start program = "/etc/init.d/mysql start"
    stop  program = "/etc/init.d/mysql stop"
    if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then restart
    if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then restart
    if 5 restarts with 5 cycles then timeout
    depend mysql_bin
    depend mysql_rc

check file mysql_bin with path /usr/sbin/mysqld
    group mysql
    include /etc/monit/templates/rootbin

check file mysql_rc with path /etc/init.d/mysql
    group mysql
    include /etc/monit/templates/rootbin

A MySQL/MariaDB konfiguráció bekapcsolásához futtassuk az alábbi parancsot:

ln -s /etc/monit/conf-available/mysql /etc/monit/conf-enabled/mysql

majd töltsük újra a Monit konfigurációt:

monit reload

Ezután a böngészőben frissítve a felületen itt is bővül a készlet a MySQL részeivel:

Monit főoldal - MySQL részekkel bővült a lista

Itt is ha rákattintunk a "mysqld" process-re vagy a fájlokra, akkor itt is láthatjuk a részleteket, valamint innen is újra tudjuk indítani kézzel is akár a szolgáltatást, stb.

PHP

A Monit elérhető konfigurációk könyvtára, a /etc/monit/conf-available/ friss telepítés esetén nem tartalmaz PHP konfigurációkat, ezért nekünk kell létrehozni ezt. Illetve, amennyiben több PHP verziót is használunk egyszerre, ebben az esetben mindegyiknek verziónak külön egyet.

Ebben a példában én most csak a 8.0-ás PHP számára hozok létre beállítást, mert ezen a szerveren éppen ez a legfrisseb változat, de ezen logika mentén létrehozhatjuk az összes általunk használt PHP verzióhoz a beállításokat.

Hozzuk létre az alábbi fájlt:

nano /etc/monit/conf-available/php8.0-fpm

És tegyük bele az alábbiakat:

check process php8.0-fpm with pidfile /var/run/php/php8.0-fpm.pid
    group php-fpm
    start program = "/usr/bin/systemctl start php8.0-fpm" with timeout 60 seconds
    stop program  = "/usr/bin/systemctl stop php8.0-fpm"
    if failed unixsocket /var/run/php/php8.0-fpm.sock then restart
    if 5 restarts within 5 cycles then timeout

Ezeket a beállításokat az ISPConfig automatizált telepítős szerverváltozat beállításaiból vételeztem, ami logikus megoldás, mivel a pidfile-okat és a socket fájlokat is az ISPConfig állítja be illetve szabályozza, tehát ezzel a beállítással biztosan jól fog működni a Monit.

Ha megvagyun, mentsük le, majd itt is hozzuk létre a linket és töltsük újra a Monit konfigurációt:

ln -s /etc/monit/conf-available/php8.0-fpm /etc/monit/conf-enabled/php8.0-fpm
monit reload

Ezután a webes részen már meg is jelenik a PHP 8.0 sora:

Monit főoldal - PHP 8.0 részekkel bővült a lista

 

 

SSHD

Az SSH kiszolgálónk állapotát is monitorozhatjuk. A frissen telepített Monit változat tartalmaz egy openssh-server beállítófájlt is, ebbe nézzünk bele még egy kicsit, mielőtt bekapcsolnánk:

nano /etc/monit/conf-available/openssh-server
check process sshd with pidfile /var/run/sshd.pid
	group system
	group sshd
	start program = "/etc/init.d/ssh start"
	stop  program = "/etc/init.d/ssh stop"
	if failed host localhost port 22 with proto ssh then restart
	if 5 restarts with 5 cycles then timeout
	depend on sshd_bin
	depend on sftp_bin
	depend on sshd_rc
	depend on sshd_rsa_key
	depend on sshd_dsa_key

check file sshd_bin with path /usr/sbin/sshd
	group sshd
	include /etc/monit/templates/rootbin

check file sftp_bin with path /usr/lib/openssh/sftp-server
	group sshd
	include /etc/monit/templates/rootbin

check file sshd_rsa_key with path /etc/ssh/ssh_host_rsa_key
	group sshd
	include /etc/monit/templates/rootstrict

check file sshd_dsa_key with path /etc/ssh/ssh_host_dsa_key
	group sshd
	include /etc/monit/templates/rootstrict

check file sshd_ecdsa_key with path /etc/ssh/ssh_host_ecdsa_key
	group sshd
	include /etc/monit/templates/rootstrict

check file sshd_ed25519_key with path /etc/ssh/ssh_host_ed25519_key
	group sshd
	include /etc/monit/templates/rootstrict

check file sshd_rc with path /etc/ssh/sshd_config
	group sshd
	include /etc/monit/templates/rootrc

Itt a 6. sorban lévő "port 22" részre hívnám fel a figyelmet. Az SSH alapértelmezett portja a 22, de amennyiben egyedi SSH portszámot használunk, akkor itt kell átjavítani a 22-es portszámot az egyedi SSH portszámunkra, hogy tudja ezt is figyelni a Monit.

Engedélyezzük ezt a beállítófájlt is:

ln -s /etc/monit/conf-available/openssh-server /etc/monit/conf-enabled/openssh-server
monit reload
ssh_host_dsa_key hiba

Az SSHD beállítása után a Monit konfiguráció újratöltésénél előfordulhat, hogy dob egy ilyen hibát:

checksum: file /etc/ssh/ssh_host_dsa_key is not regular file
/etc/monit/conf-enabled/openssh-server:27: Cannot compute a checksum for file /etc/ssh/ssh_host_dsa_key 'sshd'

Ilyenkor ha ránézünk a webes felületre, akkor az pedig így néz ki:

Monit - SSHD hiba

Belépve a fájloknál az sshd_dsa_key sorára pedig:

Monit - sshd_dsa_key - Does not exist

Ilyenkor generálnunk kell magunknak egy DSA host kulcsot az ssh-keygen parancs segítségével:

ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

Itt a passphrase-ekre csak enter-eket nyomjunk.

Majd ezután már hiba nélkül újra lehet tölteni a Monit-ot:

monit reload

Monit - DSA key hiba javítása

Majd a főoldal ráfrissítve:

Monit - DSA key hiba javítva, de még újra kell indítani az SSHD-t

Lent a fájl probléma már megszűnt, már csak fent kell belépni az sshd sorába és újraindítani a szolgáltatást. Vagy parancssorból is újraindíthatjuk. Vagy megvárjuk, amíg letelik a Monit frissítési ciklusa, ami alapból 2 perc, és akkor eltűnik magától:

Monit - SSHD is rendben

Ezt a hibát én a kézzel telepített Debian 10 (Buster) tökéletes szerverek esetén tapasztaltam (három mintából mind a 3-nál). Az automatizált telepítővel épített tökéletes szerverek esetén nem tapasztaltam ilyen problémát. Azoknál valószínű a telepítési folyamat során kerülnek külön legenerálásra ezek a host_dsa kulcsok.

Ennek a hibának a háttere persze ezzel még nincs megoldva, mert a dpkg-reconfigure openssh-server parancs (aminek alapból le kellene generálnia az SSHD host kulcsokat) is dob egy "rescue-ssh.target is a disabled or a static unit, not starting it." hibát, ami miatt most kézzel kellett legeneráltatni a hiányzó kulcsot. Tehát itt most egy áthidaló megoldással elhárítottuk a probléma Monit-ra eső részét. Természetesen az SSHD szolgáltatásunk ettől függetlenül hibátlanul működik, így nem kell aggódnunk miatta.

 

Cron

A Cron monitorozásához kapcsoljuk be a /etc/monit/conf-available/cron beállításfájlt:

ln -s /etc/monit/conf-available/cron /etc/monit/conf-enabled/cron
monit reload

Monit - Cron beállítva

Itt létrejött egy crond Process, két cron_ fájl és lent a Directory-nál egy cron_spool könyvtár. Így már ezeket is figyeli a rendszer.

Fájlrendszer

Még amit ajánlott bekapcsolni az a fájlrendszer figyelése. Ezt nem tartalmazza a friss Monit telepítés, ezért létre kell hoznunk a beállítófájlt:

nano /etc/monit/conf-available/filesystem

Majd tegyük bele az alábbi tartalmat:

check filesystem rootfs with path /
    if space usage > 90% then alert
    if inode usage > 80% then alert

Ezután kapcsoljuk be, és frissítsük a konfigurációt:

ln -s /etc/monit/conf-available/filesystem /etc/monit/conf-enabled/filesystem
monit reload

Monit - Root fájlrendszer beállítva

Itt középen megjelent a Filesystem rész, ahol a rootfs került be. Ez egy nagyon hasznos dolog, mert például értesít, ha a tárhelyünkön a lemezterület foglaltsága elért egy bizonyos százalékot, stb.

Monit - Root fájlrendszer - Részletek

Email értesítések

Ha szeretnénk email értesítéseket is kapni a különböző Monit eseményekről, akkor létre kell hoznunk egy újabb konfigurációs fájlt:

nano /etc/monit/conf-available/alerts

Majd ebbe tegyük bele az alábbi tartalmat:

set mailserver localhost
set alert felhasznalo@domain.tld

Itt helyettesítsük be a saját email címünket. Majd mentsük le, és töltsük újra a konfigurációt:

monit reload

 

Ezeken kívül van még több beállítási lehetőség is, amiket a Monit honlapján lévő példákat érdemes tanulmányozni, és kísérletezni velük.

A következő oldalon folytatjuk a második forgatókönyv áttekintésével, azaz az ISPConfig automatikus telepítése utáni Monit konfigurálásával...

 

 

 

Lapozó

Ez a leírás több oldalból áll: