Pagina inițială adminday.ro Linux Monitorizarea și repornirea automată a serviciilor pe un server Linux cu monit

Caută-ne

Ai ceva de publicat? Vrei să lansezi o idee? O provocare? Nu ezita să ne scrii: contact@adminday.ro

Grupuri Google
Abonaţi-vă la adminday
E-mail:

Ultimele discuții

  • Mandriva Linux 2011 lansare oficiala
    Buna,
    Dupa o lunga perioada de probleme si testare Mandriva Linux 2011 este
    lansata oficial. Ca noutate Mandriva va fi axata ca distributie bazata pe
    KDE, celelalte medii desktop nu vor mai fi incluse in distributia oficiala.
    De acum ciclul de lansare va fi de 1 an cu suport pentru 1.5 ani, aceasta
    versiune fiind baza pentru viitoare platforma Mandriva Desktop 2011 LTS cu
  • Ce pregateste Mandriva pe saptamana viitoare
  • System Administrator Appreciation Day
    Salutare,
    Azi e ziua in care trebuie sa-i multumim persoanei ce ne permite in
    fiecare zi sa ne citim email-urile amuzante primite pe lista sau de la
    colegi, care ne-a permis sa vedem toate noutatile de pe cartea cu fete (FB)
    la birou, care ne fereste de virusi si troieni si care ne-a lasat sa
    instalam ultima versiune de mess si putem comunica liberi cu colega
  • Mandriva Linux 2011 Beta2 disponibila.
    Echipa Mandriva coordonata de Eugeni Dodonov a facut diponibila
    versiunea Beta 2 din Mandriva Linux 2011. Intarzierea a fost datorata
    unor bug-uri de la introducerea pachetului Libreofffice (3.3.0
    deocamdata) cat si la generarea imaginilor ISO.
    Noutati: [link]
    Download: [link]
  • Re: [lug-mures] Re: Lasanre Debian Squeeze
    Pentru cei interesati imaginile iso ale noii distribubtii le gasiti la:
    [link]
Monitorizarea și repornirea automată a serviciilor pe un server Linux cu monit PDF Imprimare
Linux
Scris de Emil CHERICHEȘ   
Sâmbătă, 22 August 2009 06:51

Folosesc deja de multă vreme Nagios. Nagios este foarte util pentru notificări despre servicii pe diverse servere ce nu funcționează. Poate trimite notificări prin e-mail, SMS(având un SMS gateway conectat), poate vorbi în boxe(prin intermediul festival) sau poate destul de multe notificări.

Însă nagios face doar notificări. Rulează sub un user simplu, pentru anumite comenzi(ce nu pot fi rulat de sub un simplu user) face sudo (cu supraveghere atentă).

Până nu demult aveam întipărită bine în minte ideea că dacă vreau ceva care să verifice starea unui program și să ia măsuri în anumite situații trebuie să fac un script, aveam în cap chiar și un exemplu (de la eggdrop, remember IRC?) care să îl pun să ruleze în cron.

Ieri m-a întrebat despre așa ceva, pe messenger, unul dintre cititorii acestui blog. I-am dat aceleași răspunsuri pe care le-am scris mai sus dar se pare că pe el nu l-a mulțumit. A tot căutat și el pe net până a dat de un tutorial pe care mi l-a pasat.
Software-ul pare a fi unul destul de matur, a ajuns la versiunea a 5-a(În repozitoarele Debian stable sau Ubuntu LTS e la versiunea 4.8.x). Are chiar și o interfață web pe care totuși nu v-aș recomanda să o porniți, iar dacă o porniți să nu o lăsați liberă publicului larg(în primul rând daemonul rulează sub userul root).

Monit este capabil ca în funcție de diverși parametrii ai aplicatiei, cum ar fi memoria RAM utilizată, nivelul de încărcare al procesorului, dispariția activității pe portul TCP sau UDP să ia anumite măsuri, adică să lanseze anumite comenzi de oprire/pornire/repornire a serviciilor sau chiar modificarea permisiunilor asupra fișierelor.

Dar gata cu vorba lungă, care contrar reclamelor de la TV, este sărăcia omului și să ne apucăm de treabă. Începem cu instalarea pachetului. Nu avem de făcut decât să rulăm ca root următoarea comandă:

apt-get install monit

Ce se întâmplă?:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
monit
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 254kB of archives.
After this operation, 680kB of additional disk space will be used.
Get:1 http://ftp.nb.lug.ro hardy/universe monit 1:4.8.1-2.1 [254kB]
Fetched 254kB in 0s (1966kB/s)
Selecting previously deselected package monit.
(Reading database ... 79286 files and directories currently installed.)
Unpacking monit (from .../monit_1%3a4.8.1-2.1_i386.deb) ...
Setting up monit (1:4.8.1-2.1) ...
Starting daemon monitor: -e monit won't be started/stopped
unless it it's configured
please configure monit and then edit /etc/default/monit
and set the "startup" variable to 1 in order to allow
monit to start

Edităm ulterior fișierul /etc/default/monit

startup=1
CHECK_INTERVALS=180

Edităm /etc/monit/monitrc

set alert 
 Această adresă de e-mail este protejată de spamboţi; aveţi nevoie de activarea JavaScript-ului pentru a o vizualiza
  #adresa de e-mail validă unde se vor trimite notificările
include /etc/monit.d/*

Creem directorul /etc/monit.d și creem câte un fișier de configurare pentru diversele servicii ce urmează să le monitorizăm.

mkdir /etc/monit.d
cd /etc/monit.d/

Iată câtvea exemple:

apache2:

  check process apache2 with pidfile /var/run/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 1.5 GB for 5 cycles then restart
if children > 50 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
group lamp

bind9:

  check process named with pidfile /var/run/bind/run/named.pid
start program = "/etc/init.d/bind9 start"
stop program = "/etc/init.d/bind9 stop"
if failed host 127.0.0.1 port 53 type tcp protocol dns then alert
if failed host 127.0.0.1 port 53 type udp protocol dns then alert
if 5 restarts within 5 cycles then timeout
group dns

dovecot:

 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 5 restarts within 5 cycles then timeout
if failed port 110 type TCP protocol POP then restart
if failed port 143 type TCP protocol IMAP then restart

mysql:

  check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 1.0 GB for 5 cycles then restart
if children > 50 then restart
if failed host 127.0.0.1 port 3306 protocol mysql then restart
if 5 restarts within 5 cycles then timeout
if loadavg(5min) greater than 10 for 8 cycles then stop
group lamp

postfix:

 check process postfix with pidfile /var/spool/postfix/pid/master.pid
group mail
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout

proftpd:

 check process proftpd with pidfile /var/run/proftpd.pid
start program = "/etc/init.d/proftpd start"
stop program = "/etc/init.d/proftpd stop"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout
group lamp

ssh:

  check process sshd with pidfile /var/run/sshd.pid
start program = "/etc/init.d/ssh start"
stop program = "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
group ssh

webmin:

 check process webmin with pidfile /var/webmin/miniserv.pid
group webmin
start program = "/etc/init.d/webmin start"
stop program = "/etc/init.d/webmin stop"
if failed host 127.0.0.1 port 8080 then restart
if 5 restarts within 5 cycles then timeout
 
check file webmin_rc with path /etc/init.d/webmin
group webmin
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

În final pornim serviciul de monitorizare

/etc/init.d/monit start

Starting daemon monitor: monit.


Sursa Emil Cheriches

 

Adaugă comentariu


Codul de securitate
Actualizează