Novosti u CARNet Debian distribuciji: monit-cn

Jedna od novotarija koje smo pripremili za tekuću (verziju 2.x, baziranu oko Debian Sarge-a) i novu (verziju 3.x, baziranu oko Debian Etch-a) CARNet Debian distribuciju je monit-cn paket. Monit je sam po sebi iznimno koristan servis za nadzor drugih servisa -- on u predefiniranim intervalima prolazi po listi definiranih resursa (najčešće drugih servisa) te provjerava njihovu ispravnost i poduzima neke predefinirane akcije.

Primjerice ako imamo sljedeću konfiguraciju za Dovecot IMAP4/POP3 servis:

check process dovecot with pidfile "/var/run/dovecot/master.pid"
group mail
start program = "/etc/init.d/dovecot start"
stop program = "/etc/init.d/dovecot stop"
if failed host 127.0.0.1 port 143 protocol imap
then restart
if failed host 127.0.0.1 port 110 protocol pop
then restart

Monit će u tom slučaju svakih n sekundi provjeriti postoji li uopće navedena PID datoteka. Ako ne postoji servis će biti (za svaki slučaj) stopan pa startan koristeći definiranu init skriptu. Ako servis postoji te njegov PID u listi procesa odgovara onome iz datoteke, slijede ostali testovi -- monit ce popričati sa adresom 127.0.0.1 i portom 143 koristeći IMAP protokol, a zatim s portom 110 koristeći POP3. U slučaju da i jedan od tih protokola dobije grešku od nadziranog servisa ili se servis ne uopće odazove, monit će restartati servis. Na ovaj način je moguće definirati cijelu listu servisa i provjera ispravnosti, čime omogućavamo kvalitetniji aplikativni nadzor od onog sto nudi tipični System V init sustav. Da bi pojednostavili konfiguriranje liste postojećih servisa na CARNet-Debian posluzitelju, napravljen je monit-cn paket. On će prilikom instalacije provjeriti sto od tih servisa postoji (odnosno što je od njih instalirano i aktivno) na sustavu, popunit će /etc/monit.d/ direktorij sa konfiguracijama i startati monit. Osim toga, registrirati će ga kao poseban "respawnable" servis (koji ne može "umrijeti", već se uvijek sam sam ponovo pokrene) koji nadzire ostale detektirane servise na sustavu. Tipično podržani servisi koji se mogu nadzirati su:

amavisd.conf   bind9.conf    freeradius.conf  proftpd.conf    sshd.conf
aosi.conf clamd.conf mysqld.conf qpopper.conf syslogd.conf
apache1.conf cron.conf ntpd.conf samba.conf thttpd.conf
apache2.conf dhcpd3.conf openldap.conf saslauthd.conf tomcat5.conf
asterisk.conf dovecot.conf postfix.conf sendmail.conf vsftpd.conf
bind8.conf exim.conf postgrey.conf sophie.conf

Oko rekonfiguriranja monita (promjena monit init skripte, registracije u inittab i sl.) i njegovog načina startanja nije potrebno ništa ručno mijenjati, već automatika sve obavlja umjesto sistemca:

nekkar:~ ROOT # apt-get install monit-cn
(Reading database ... 65418 files and directories currently installed.)
Preparing to replace monit-cn 1:4.8.1-1 (using .../pkg/monit-cn_4.8.1-1_all.deb) ...
Unpacking replacement monit-cn ...
Setting up monit-cn (4.8.1-1) ...
CN: Enabled dovecot.conf (new service)
CN: Enabled sshd.conf (new service)
CN: Enabled vsftpd.conf (new service)
CN: Enabled amavisd.conf (new service)
CN: Enabled postgrey.conf (new service)
CN: Enabled saslauthd.conf (new service)
CN: Enabled postfix.conf (new service)
CN: Enabled apache1.conf (new service)
CN: Enabled syslogd.conf (new service)
CN: Enabled clamd.conf (new service)
CN: Stopping/restarting monit service
CN: Disabling monit SystemV script
CN: Monit SystemV init script disabled -- inittab is in use
CN: Exiting now...
CN: (Re)starting monit service, please check /var/log/daemon.log

U slučaju da kasnije doinstalirate neki servis, detekciju podržanih servisa uvijek možete ponovo pozvati -- a ona će pametno zaključiti što je već bilo aktivno, što nije i da li je eventualno potrebno restartati monit:

nekkar:~ ROOT # update-monit.d
CN: Enabled saslauthd.conf (previously disabled)
CN: Enabled postfix.conf (new service)
CN: Enabled clamd.conf (new service)
CN: Stopping/restarting monit service

nekkar:~ ROOT # update-monit.d
CN: No new services detected, sorry

Na ovaj način možete riješiti problem sa povremenim padovima amavisd servisa ili nekim ostalim standardno problematičnim servisima. Standardna monit-cn konfiguracija provjerava servise svakih 900 sekundi, te u slučaju detektiranih (i riješenih) problema šalje e-mail na root@localhost o tome. Provjeriti da li se monit ispravno pokreće možete s naredbom pidof:

nekkar:~ ROOT # pidof monit
24858

U slučaju da pidof ne vrati nikakav ispis, znači da postoji neka greška u konfiguracijskim datotekama od monita, pa je najjednostavnije ustanoviti grešku na sljedeći način (npr. ovdje je nehotična greška to što ime protokola nije pop3, već samo pop):

nekkar:~ ROOT # /usr/sbin/monit -Ic /etc/monit/monitrc
/etc/monit.d/dovecot.conf:9: Error: syntax error 'pop3'

U ovom slučaju vidimo da je problem do greške u dovecot.conf datoteci, pa je dovoljno rečenu obrisati (ili popraviti grešku u sintaksi), te poslati initu signal da ponovo pročita inittab:

nekkar:~ ROOT # vim /etc/monit.d/dovecot.conf
...
nekkar:~ ROOT # kill -HUP 1
nekkar:~ ROOT # pidof monit
19036
Vijesti: 
Kuharice: 
Kategorije: 
Vote: 
0
No votes yet