Tartalom
- oldal: Monit telepítése és beállítása
- oldal: Monit konfigurálása és finomhangolása az ISPConfig automatikus telepítése után
A 2. oldal tartalma
Folytatás
Az első oldalon elvégeztük a Monit rendszermonitor alkalmazás friss telepítését és beállítását egy Debian 10 (Buster) tökéletes szerver 1.1-es szerver változaton, ezen az oldalon pedig Egy ISPConfig automatizált telepítő által már feltelepített és bekonfigurált Monit példány utólagos hibajavítását, beállítását és finomhangolását hajtjuk végre.
Monit konfigurálása az ISPConfig automatikus telepítése után
Mivel itt már egy előre feltelepített és beállított Monit rendszerrel lesz dolgunk, aminek a paraméterei nem mindenben fedik le igényeinket, ezért ez a rész inkább - az előző részek kiegészítőjeként - egy amolyan pörgősebb hibaelhárító, finomhangoló rész lesz, ahol megjavítjuk a nem működő összetevőket, és saját igényeinkre szabjuk a Monit beállításait a már használatban lévő rendszerünkön. Ennek a fejezetnek alapjául szolgálhat az alábbi Debian 11 (Bullseye) alapú tökéletes szerver telepítő leírások valamelyike:
- Tökéletes szerver: Debian 11 (Bullseye) v1.0
- Hogyan építhetjük meg és élesíthetjük ISPConfig3 szerverünket, valamint hogyan biztosíthatjuk a Let's Encrypt SSL-el kezelőpanelünket, főbb szolgáltatásainkat és weboldalainkat
SSL kapcsolat beállítása
A probléma:
A szerver sikeresen feltelepült az ISPConfig automatizált telepítője segítségéevel, ahol opcióként a Monit is beállításra került, így ez is feltelepült. A szerver élesítése (domain név átirányítása) után kikért Let's Encrypt SSL tanúsítvány telepítését követően a szerver webes szolgáltatásai már csak HTTPS kapcsolattal érhetők el. A Monit 2812-es portja alapértelmezetten azonban nem teszi lehetővé az SSL kapcsolatot, ezért a Monit felületére lépve hibát dob:
"ERR_SSL_PROTOCOL_ERROR"
A megoldás:
A leírás első felében már átnéztük az SSL beállítását, ezért a művelet megértéséhez tekintsük át a korábbi részeket, majd ide visszatérve hajtsuk végre az alábbiakat:
Nyissuk meg szerkesztésre a webes felület konfigurációját:
nano /etc/monit/conf-available/webui
(Ellentétben a friss telepítéses részben leírtakkal, az ISPConfig által telepített Monit webes beállításai ebben a fájlban vannak.)
set httpd port 2812 and #SSL ENABLE #PEMFILE /usr/local/ispconfig/interface/ssl/ispserver.pem allow admin:xxx
Vegyük ki a kommentet a pirossal jelzett helyről a 2. sor elejéről, és tegyük bele a zölddel kiemelt plusz sort, hogy így nézzen ki:
set httpd port 2812 and #SSL ENABLE #PEMFILE /usr/local/ispconfig/interface/ssl/ispserver.pem PEMFILE /etc/monit/ssl/ispserver.pem allow admin:xxx (itt a saját jelszavunk van, amit a telepítő adott a végén)
Mentsük le, majd sorban hajtsuk végre az alábbi parancsokat:
mkdir /etc/monit/ssl
cd /etc/monit/ssl
cp /usr/local/ispconfig/interface/ssl/ispserver.pem .
chmod 700 ispserver.pem
monit reload
Ha ennél a Monit újratöltésnél az alábbi hibát dobja:
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'
Akkor ugorjunk erre a részre a hiba kijavításához, majd itt folytassuk.
Ezután frissítsük a Monit webes felületét:
Majd belépés után:
És az érvényes tanúsítvány:
A Let's Encrypt ACME kliense legkésőbb 3 havonta megújítja az SSL tanúsítványokat, ezért ennek a fájlnak a bemásolását és jogosultsági beállítását minden alkalommal el kellene végezni. A leírás végén a függelékben elkészítünk egy automatizált megoldást erre, hogy ezt magától elvégezze. Most megyünk tovább a következő feladatra.
Egyedi SSH port beállítása
A probléma:
Az előző SSL-es megoldásnál is látszik, hogy az SSHd folyamatot nem monitorozza a rendszer. Belépve az sshd részleteibe, a következőt látjuk:
A lényeg az alsó szürke sorban olvasható:
If failed [localhost]:22 type TCP/IP protocol SSH with timeout 5 s then restart
A probléma oka, hogy a szerver telepítését követően egyedi portszámot állítottunk be az SSHD számára, ezért a Monit nem tud hozzá csatlakozni, ezért a beállított szabályok szerint az 5. ellenőrzési ciklus után lekapcsolja a monitorozását. Az ISPConfig automatizált telepítésekor ha szigorúbb SSH beállításokkal dolgozunk, akkor ilyenkor le is állítja az SSHd szolgáltatást, tehát kidob a rendszer a terminálokból is. Ha ilyen történik, akkor a webes felületen kell újraindítani/elindítani az SSHd szolgáltatást, és átmenetileg kézzel leállítani a monitorozást, amíg elvégezzük az itt következő megoldást. Majd ezután ismét be lehet kapcsolni a szolgáltatás monitorozását.
Ez a rész tehát azoknak szól, akik hasonlóan állították össze a szerverük SSH konfigurációját, mint én.
A megoldás:
Itt is áttekintettük már korábban az egyedi SSH port beállítási lehetőségét.
Ennek megfelelően nyissuk meg az alábbi konfigurációs fájlt:
nano /etc/monit/conf-available/sshd
Ebben találunk egy ilyen sort:
[...] if failed host localhost port 22 with proto ssh then restart [...]
Itt javítsuk át a 22-es portszámot az egyedi portszámunkra, mentsük le, majd töltsük újra a Monit konfigurációt:
monit reload
Majd a webes felületen az SSHD részletek oldalon lent kattintsunk az "Enable monitoring" gombra. Végül visszalépve a főoldalra, már működik az SSHd monitorozása:
Erőforráslimitek finomhangolása
A probléma:
Túl gyakran éri el a Monit a limiteket, vagy éppen fordítva: akkor sem jelez a rendszer, amikor már extrém magas értékeket mutat.
A megoldás:
Az erőforráslimiteket alapból általános értékekre állították, amik nem illeszkednek a saját szerverünk erőforrásaihoz. Ennek megoldásához finomhangolást kell végeznünk a limitek beállításánál, hogy azok a saját szerverünkre illeszkedjenek. Ennek elvégzéséről a leírás korábbi részében volt már szó, így oda ugorva megtudhatjuk ennek a kivitelezését.
Monit ciklus beállítása
A Monitnak van egy frissítési ciklusa, ami a friss telepítések esetén alapértelmezetten 2 perc, de az ISPConfig kezelőpanel automatikus telepítése során ezt felülírják 60 másodpercre. Ha szeretnénk ezt sűrűbbre, vagy éppen ritkábbra állítani, akkor nyissuk meg a Monit fő konfigurációs fájlját:
nano /etc/monit/monitrc
És itt rögtön az elején találunk benne egy ilyen sort:
set daemon 120 # check services at 2-minute intervals
Az automatizált telepítés esetén itt 60-as értéket láthatunk. Ezt állítsuk át a kívánt frissítési időközre.
Ha beállítottuk a megfelelő értéket, töltsük újra a konfigurációt:
monit reload
Webes felület egyedi portszám beállítása
Éles környezetben felmerülhet az igény a nagyobb fokú biztonságra. A Monit webes felületének elérési portszámát lehetőségünk van átállítani a 2812-es alapértelmezett portról egy egyedi értékre, így a kívülállók sokkal nehezebben akadnak rá Monit rendszerünkre. Ennek beállításához ugorjunk vissza a leírás első részébe, ahol ezt részletesebben kifejtettem. Tehát az ott leírtak figyelembevételével állítsunk be olyan portszámot, ami rendszerünkben még nincs használatban. Ezeknek a használaton kívüli portszámoknak a felderítéséről pedig az alábbi linkeken tájékozódhatunk:
- Hogyan ellenőrizhetjük Debian vagy Ubuntu Linux operációs rendszerünk használatban lévő, illetve szabad TCP/UDP portjait?
- Alapszintű port szkennelés - Avagy hogyan ellenőrizhetjük Linux szerverünk biztonságát az illetéktelen behatolókkal szemben
Email értesítések beállítása
A probléma:
Az automatikus telepítés során a telepítő parancs összeállításánál elfelejtettük betenni a --monit-alert-email kapcsolót, így most nem kapunk értesítéseket a különböző Monit események bekövetkezésekor.
A megoldás:
A leírás első részében már volt szó az email értesítések beállításáról, így ott meg tudjuk tekinteni. Itt annyi a különbség, hogy az automatizált ISPConfig telepítés esetén már létezik a korábban említett fájl, valamint még vannak benne egyéb kikommentezett sablonok is, amikkel nem kell semmit csinálni, csak átírni az email címünket, és bekapcsolni a beállítást a szokásos módon.
Ha mindent jól csináltunk, akkor ilyesmi emaileket kapunk, például ha a CPU használat elérte a limitben beállított értéket:
Resource limit matched Service vps Date: Mon, 23 Jan 2023 00:05:55 Action: alert Host: vps Description: cpu system usage of 20.7% matches resource limit [cpu system usage > 20.0%] Your faithful employee, Monit
Majd utána ilyen érkezik, amint a terhelés visszakúszott a limit alá:
Resource limit succeeded Service vps Date: Mon, 23 Jan 2023 00:08:13 Action: alert Host: vps Description: cpu system usage check succeeded [current cpu system usage = 3.5%] Your faithful employee, Monit
És a többi figyelt szolgáltatásnál is küldi a hasonló leveleket.
Itt nagyjából ennyi volna a beállítani való, később még bővítem, ha eszembe jut valami hasznos beállítás.
Függelék
Az itt következő részekben még kiegészítjük pár hasznos dologgal a korábban megismerteket.
Állapotok ellenőrzése parancssorból
A Monit lehetőséget nyújt parancssorból is megtekinteni az állapotinformációkat. Ehhez a monit parancsot kell futtatni a megfelelő kapcsolókkal.
Összefoglaló
Ha csak egy gyors összesítést szeretnénk kapni a figyelt szolgáltatásokról, akkor futtassuk az alábbi parancsot:
monit summary
Példa kimenet nálam:
Monit 5.27.2 uptime: 8d 23h 40m ┌─────────────────────────────────┬────────────────────────────┬───────────────┐ │ Service Name │ Status │ Type │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ vps │ OK │ System │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ sshd │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ rspamd │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ redis-server │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ pure-ftpd-mysql │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ postfix │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php8.1-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php8.0-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php7.4-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php7.3-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php7.2-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php7.1-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php7.0-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ php5.6-fpm │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ named │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ memcached │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ mariadb │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ fail2ban │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ dovecot │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ crond │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ apache │ OK │ Process │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ sshd_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ sftp_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ sshd_rsa_key │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ sshd_dsa_key │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ sshd_rc │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ master_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ postdrop_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ postqueue_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ master_cf │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ main_cf │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ postfix_rc │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ memcache_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ memcache_rc │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ mysql_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ mysql_rc │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ fail2ban_log │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ cron_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ cron_rc │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ apache_bin │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ apache_rc │ OK │ File │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ cron_spool │ OK │ Directory │ ├─────────────────────────────────┼────────────────────────────┼───────────────┤ │ rootfs │ OK │ Filesystem │ └─────────────────────────────────┴────────────────────────────┴───────────────┘
Állapotjelentés
Ha pedig egy részletes állapotjelentésre vagyunk kíváncsiak, akkor futtassuk az alábbi parancsot:
monit status
Ez egy elég hosszú lista, így most nem is másolom be, de le lehet külön is kérdezni az adott folyamatokat, erőforrásokat, például:
monit status apache
Monit 5.27.2 uptime: 8d 23h 50m Process 'apache' status OK monitoring status Monitored monitoring mode active on reboot start pid 1453602 parent pid 1 uid 0 effective uid 0 gid 0 uptime 3d 15h 7m threads 1 children 10 cpu 0.0% cpu total 0.1% memory 0.5% [19.9 MB] memory total 4.7% [185.7 MB] security attribute unconfined filedescriptors 19 [0.2% of 8192 limit] total filedescriptors 215 read bytes 0 B/s [468.9 MB total] disk read bytes 0 B/s [23.2 MB total] disk read operations 0.0 reads/s [1116138 reads total] write bytes 0 B/s [85.9 MB total] disk write bytes 0 B/s [60.9 MB total] disk write operations 0.0 writes/s [291832 writes total] port response time 0.413 ms to localhost:443 type TCP/IP protocol DEFAULT port response time 4.689 ms to localhost:80 type TCP/IP protocol HTTP data collected Tue, 24 Jan 2023 10:41:51
SSL automatikus frissítése megújításkor
A rendszerben működő ACME kliens - a legutolsó megújításától számítva - legkésőbb 3 hónapon belül ciklikusan megújítja az SSL tanúsítványokat, ezért az ebben a leírásban korábban kézzel átmásolt PEM fájlt is frissíteni kell, valamint a jogosultságát is újra beállítani. Erre többféle megoldás is kínálkozik, amik közül most megnézünk párat, és amelyik a szimpatikusabb, azzal készítsük el saját automatikánkat.
Illetve most egyelőre csak egyfélét dolgoztam itt ki, amit le is teszteltem (Debian 10-en és Debian 11-en) és hibátlanul működik, de később még kipótolom ezt a részt, tervezek még ide egy-két másik megoldást is, amint időm engedi.
Frissítés Incron használatával
Figyelem!
Az Incron-al kapcsolatban szót kell ejtenünk egy biztonsági problémáról!
Az incron 0.5.12-1 verziójában találtak egy hibát, aminek következtében a csomag kikerült a Debian 11 (Bullseye) stabil csomagtárából, viszont az incron csomag a Debian 11 backports tárolójában továbbra is elérhető. A hiba leírása itt található, melynek a lényege röviden a következő:
"A problémát a figyelt útvonalakon belüli új könyvtárak létrehozása okozza: ezek az inotify figyelési cél újratöltését váltják ki, ami érvénytelenné teszi a régi figyelési struktúrát."
Tehát amellett a tény mellett nem szabad elsiklanunk, hogy van a programcsomagban egy bug, viszont a mi feladatunkat ez nem érinti, mivel mi most nem könyvtárat figyeltetünk vele, amiben újabb könyvtárak jönnek létre, hanem egy darab fájlt kell figyelnünk.
Ezek tudatában tehát mindenki döntse el, hogy használja-e az incron-t vagy sem.
Tudomásul véve a fentieket, ha szeretnénk beállítani az incron segítségével az SSL fájlunk átfrissítését, akkor folytassuk az itt leírtakkal.
A Tökéletes szerverek esetén a backports tárolók már eleve be vannak állítva, így ezzel nincs semmi teendőnk, csak simán telepítsük az incron csomagot.
apt-get install incron
Ezután hozzunk létre egy parancsfájlt mondjuk az ssl fájl mellé (itt nem kell keresgélnünk):
nano /etc/monit/ssl/monit_ssl_refresh.sh
És tegyük bele a következő tartalmat:
#!/bin/sh cp /usr/local/ispconfig/interface/ssl/ispserver.pem /etc/monit/ssl/ chmod 700 /etc/monit/ssl/ispserver.pem monit reload
Itt átmásoljuk a .pem fájlt, majd beállítjuk a jogosultságát 700-ra, végül újratöltjük a Monit konfigurációt, hogy már ezzel az SSL-el töltődjön be.
Mentsük le a fájlt, majd tegyük futtathatóvá:
chmod +x /etc/monit/ssl/monit_ssl_refresh.sh
Ezután adjuk hozzá a root felhasználót az incron jogosult felhasználói közé, mert enélkül a root sem használhatja:
echo "root" >> /etc/incron.allow
Majd az incrontab paranccsal szerkesszük az incrontab-ot:
incrontab -e
Tegyük bele az alábbi sort:
/usr/local/ispconfig/interface/ssl/ispserver.pem IN_MODIFY /etc/monit/ssl/monit_ssl_refresh.sh
És innentől kezdve már lefut a scriptünk amikor megváltozik az eredeti fájl.
Konklúzió
Ennyi lenne tehát a Monit szolgáltatás és rendszererőforrás monitorozó alkalmazás működtetése, amit láthattunk nulláról történő telepítés és bekonfigurálás formájában valamint az ISPConfig automatizált telepítője által már elkészített formában is, amit már csak finomhangolnunk kellett. Remélem sokaknak hasznára válik ez a leírás, és jó szolgálatot tesz a Monit a szerverük üzemeltetése során.
- mmonit.com/monit/documentation/monit.html
- mmonit.com/wiki/Monit/ConfigurationExamples
- Szerver monitorozása a Munin segítségével Debian 9 (Stretch) és Debian 10 (Buster) rendszereken
- Hogyan építhetjük meg és élesíthetjük ISPConfig3 szerverünket, valamint hogyan biztosíthatjuk a Let's Encrypt SSL-el kezelőpanelünket, főbb szolgáltatásainkat és weboldalainkat
- Enciklopédia - ACME (Automated Certificate Management Environment)
- Enciklopédia - Apache HTTP Server
- Enciklopédia - CLI
- Enciklopédia - Domain név
- Enciklopédia - HTTPS
- Enciklopédia - Incron
- Enciklopédia - IP-cím
- Enciklopédia - ISPConfig
- Enciklopédia - MySQL
- Enciklopédia - PHP
- Enciklopédia - SSH
- Enciklopédia - SSL (Secure Sockets Layer)
- Enciklopédia Szimbolikus link
- Manual oldal - monit
Lapozó
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 47 megtekintés