monitorizare servicii in linux (4)
Monitorizarea serviciilor este un proces prin care vom detecta active sau chiar de ce nu si pro-activ rularea sau nu a anumitor servicii. De cele mai multe ori serviciile pe care dorim sa le monitorizam sunt sustinute de programele pe care le putem denumi si daemoni.
In cazul de fata vom incerca sa vedem cum putem rezolva problema pentru serviciul de http sau https si implicit daemon de apache/httpd.
In primul rand ne intereseaza cum dorim sa facem acest mod de monitorizare:
· activ, mai précis daca serviciul nu ruleaza sa-l restartam;
· proactiv, in acest caz incercam sa detectam din timp problemele care pot duce la oprirea serverului de apache (metoda pe care o vom trata ulterior).
In cazul monitorizarii active ne intereseaza repornirea serviciului care este oprit in acest caz fiind vorba de serverul apache implicit a daemon httpd.
In primul rand va trebui sa stim cum putem reporni serverul de apache:
· prima posibilitate este testarea serviciului adica:
#service httpd status
in acest caz daca serviciul ruleaza comanda ne returneaza pid-ul pentru procese.
· o alta posibilitate este testarea daemon a serverului apache mai précis:
#/etc/init.d/httpd status
in acest la fel comanda ne returneaza pid-ul sub care ruleaza daemon.
La diferitele distributii (versiuni) de linux putem avea diferite comanezi dar in principiu ele sunt cam aceleasi.
Ne mai intereseaza testarea rularii daemon de apache si cu o comanda externa care sa ne poata returna o variabila care sa fie comparata cu ceva urmand ca rezultatul sa fie comparat pentru repornirea daemon de httpd daca este cazul. In acest caz vom folosi comanda pgrep pentru daemon httpd si care returneaza valoarea 0 (zero) in cazul in care daemon este oprit.
Cum facem ? mai jos se gaseste un script care monitorizeaza daca httpd este oprit sau nu si daca este oprit va face restart pentru serviciul specificat:
#!/bin/bash
# acest script realizeaza operatia de restart pentru serviciul pe care
# il specificam
# monitorizarea se realizeaza cu ajutorul lui cron
# modalitatea de restart a serviciului se poate realiza in mai multe feluri
# am ales pentru serviciul de httpd adica apache
#
RESTART=”/sbin/service httpd restart”
# definim calea pentru comanda pgrep
PGREP=”/usr/bin/pgrep”
# definim numele daemon in acest caz avem httpd
HTTPD=”httpd”
# vom cauta pid pentru daemon httpd
$PGREP ${HTTPD}
# testam daca ruleaza sau nu daemon de httpd
if [$? -ne 0]
then
$RESTART
fi
Pentru ca monitorizarea sa fie efectuata in mod automat este suficient ca acest script sa fie trecut in lista de executie pentru daemon de cron si care sa verifice la fiecare 5 minute daca httpd ruleaza sau nu. Pentru utilizarea acestuia in cadrul lui crond este sufucient sa fie adaugata o linie de forma, in cadrul fisierului crontab:
*/5 * * * * root /path_script > /dev/null 2>&1
In acest fel sistemul de operare va testa daca httpd ruleaza, test care se face la fiecare 5 minute, si in cazul in care acesta nu ruleaza va fi repornit daemon httpd pentru serverul apache.