| 1 |
############################################################### |
|---|
| 2 |
# sys_alive.pl - configuration # |
|---|
| 3 |
############################################################### |
|---|
| 4 |
# Programme de surveillance de serveur web sous Linux # |
|---|
| 5 |
# par Twidi (scripts@twidi.com) # |
|---|
| 6 |
############################################################### |
|---|
| 7 |
# Ce programme est libre, vous pouvez le redistribuer et/ou # |
|---|
| 8 |
# le modifier selon les termes de la Licence Publique # |
|---|
| 9 |
# Générale (GPL) GNU publiée par la Free Software Foundation. # |
|---|
| 10 |
# # |
|---|
| 11 |
# Ce programme est distribué car potentiellement utile, mais # |
|---|
| 12 |
# SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris # |
|---|
| 13 |
# les garanties de commercialisation ou d'adaptation dans un # |
|---|
| 14 |
# but spécifique. Reportez-vous à la Licence Publique # |
|---|
| 15 |
# Générale (GPL) GNU pour plus de détails. # |
|---|
| 16 |
# # |
|---|
| 17 |
# -> http://www.linux-france.org/article/these/gpl.html <- # |
|---|
| 18 |
# # |
|---|
| 19 |
############################################################### |
|---|
| 20 |
# DerniÚre version sur : http://scripts.twidi.com/ # |
|---|
| 21 |
############################################################### |
|---|
| 22 |
# Chaque serveur aura 1 configuration différente en fonction # |
|---|
| 23 |
# de son utilisation (sa puissance et ce qui tourne dessus) # |
|---|
| 24 |
############################################################### |
|---|
| 25 |
# Plus d'informations dans le fichier sys_alive.pl # |
|---|
| 26 |
############################################################### |
|---|
| 27 |
|
|---|
| 28 |
#------------------------------------------------------------------------------# |
|---|
| 29 |
#### CONFIGURATION #### |
|---|
| 30 |
#------------------------------------------------------------------------------# |
|---|
| 31 |
|
|---|
| 32 |
# mode demon ? |
|---|
| 33 |
%mode_demon = ( |
|---|
| 34 |
'actif' => 1, |
|---|
| 35 |
'pid_file' => '/var/run/sys_alive.pid', |
|---|
| 36 |
'wait' => 60, |
|---|
| 37 |
); |
|---|
| 38 |
|
|---|
| 39 |
# les répertoires de logs et de données, à remplacer si différent du repertoire de conf, par défaut le même que sys_alive.pl |
|---|
| 40 |
$rep_data = ''; |
|---|
| 41 |
$rep_log = ''; |
|---|
| 42 |
|
|---|
| 43 |
# liste des démons à relancer (commenter la ligne pour ne pas gérer un démon) |
|---|
| 44 |
# la clé du hash est le nom du process dans un top |
|---|
| 45 |
%demons_start = ( |
|---|
| 46 |
'httpd' => '/etc/rc.d/init.d/httpd start', # apache (pour debian : /etc/init.d/apache start) |
|---|
| 47 |
'mysqld' => '/etc/rc.d/init.d/mysql start', # mysql (pour debian : /etc/init.d/mysql start) |
|---|
| 48 |
'named' => '/etc/rc.d/init.d/named start', # bind (pour debian : /etc/init.d/bind9 start) |
|---|
| 49 |
); |
|---|
| 50 |
|
|---|
| 51 |
# liste des utilisateurs lançant les démons à relancer (commenter la ligne pour ne pas gérer un démon) |
|---|
| 52 |
# la clé du hash est le nom du process dans un top |
|---|
| 53 |
%demons_user = ( |
|---|
| 54 |
'httpd' => 'root', # apache |
|---|
| 55 |
); |
|---|
| 56 |
|
|---|
| 57 |
# liste des démons à stopper qd les alertes atteignent le niveau 2 |
|---|
| 58 |
# la clé du hash est le nom du process dans un top |
|---|
| 59 |
%demons_stop = ( |
|---|
| 60 |
'httpd' => '/etc/rc.d/init.d/httpd stop', # apache (pour debian : /etc/init.d/apache stop) |
|---|
| 61 |
'mysqld' => '/etc/rc.d/init.d/mysql stop', # mysql (pour debian : /etc/init.d/mysql stop) |
|---|
| 62 |
'named' => '/etc/rc.d/init.d/named stop', # bind (pour debian : /etc/init.d/bind9 stop) |
|---|
| 63 |
); |
|---|
| 64 |
|
|---|
| 65 |
# démons parmis ceux ci-dessus dont on va forcer l'arret tant qu'il existe |
|---|
| 66 |
# si jamais le premier arret n'a pas fonctionné |
|---|
| 67 |
# on indique le nombre de tentative |
|---|
| 68 |
%demons_brute_stop = ( |
|---|
| 69 |
'httpd' => 10 |
|---|
| 70 |
); |
|---|
| 71 |
|
|---|
| 72 |
# liste des alertes (commenter la ligne pour pas d'alerte) |
|---|
| 73 |
%seuil_alertes = ( |
|---|
| 74 |
#'ram_used' => 1000000, # alerte quand la ram reellement utilisee dépasse cette valeur |
|---|
| 75 |
'swap' => 32000, # alerte quand le swap dépasse cette valeur (1/16 de la ram) |
|---|
| 76 |
'load_average' => 4, # alerte quand le load average dépasse cette valeur |
|---|
| 77 |
'nb_process' => 140, # alerte quand le nb de process lancés dépasse cette valeur |
|---|
| 78 |
); |
|---|
| 79 |
|
|---|
| 80 |
# ces alertes vont etre utilisées pour stopper certains démons qd ils atteindront ces seuils |
|---|
| 81 |
%seuil_alertes_niveau2 = ( |
|---|
| 82 |
#'ram_used' => 1500000, # alerte quand la ram reellement utilisee dépasse cette valeur |
|---|
| 83 |
'swap' => 128000, # alerte quand le swap dépasse cette valeur (1/4 de la ram ?) |
|---|
| 84 |
'load_average' => 20, # alerte quand le load average dépasse cette valeur |
|---|
| 85 |
'nb_process' => 200, # alerte quand le nb de process lancés dépasse cette valeur |
|---|
| 86 |
); |
|---|
| 87 |
|
|---|
| 88 |
# liste des démons à stopper qd une alerte atteint le niveau 2, en indiquant la durée |
|---|
| 89 |
# indiquer le demon (défini plus haut) et le nb de secondes avant de le relancer |
|---|
| 90 |
# (le durée réelle sera un facteur du nb de secondes entre deux exécutions de sys_alive en cron) |
|---|
| 91 |
%demons_to_stop = ( |
|---|
| 92 |
'mysqld' => 110, |
|---|
| 93 |
'httpd' => 110, |
|---|
| 94 |
); |
|---|
| 95 |
|
|---|
| 96 |
# liste des process limités en durée (le nom utilise les expressions réguliÚres) |
|---|
| 97 |
@process_to_kill = ( |
|---|
| 98 |
'^httpd$', # process apache |
|---|
| 99 |
'\.cgi$', # programmes cgi |
|---|
| 100 |
'\.php[3|4]?$', # programmes php (ne fonctionne que si php est en suexec) |
|---|
| 101 |
); |
|---|
| 102 |
|
|---|
| 103 |
# liste des process NON limités en durée (le nom utilise les expressions réguliÚres) |
|---|
| 104 |
# (pour mettre les process qui correspondent à la liste ci-dessus mais à garder) |
|---|
| 105 |
@process_to_keep = ( |
|---|
| 106 |
'sys_alive', # on ne kill pas sys_alive ;) |
|---|
| 107 |
'^script_long\.cgi$', # ^ en debut de script, \ avant un point et $ en fin |
|---|
| 108 |
); |
|---|
| 109 |
|
|---|
| 110 |
# mails pour les alertes |
|---|
| 111 |
@mails = ( |
|---|
| 112 |
'alerte_serveur@domaine.com', |
|---|
| 113 |
); |
|---|
| 114 |
|
|---|
| 115 |
# mails envoyé sur un sms |
|---|
| 116 |
@mails_sms = ( |
|---|
| 117 |
'06xxxxxxxx@sfr.net', |
|---|
| 118 |
); |
|---|
| 119 |
|
|---|
| 120 |
# autres variables |
|---|
| 121 |
$sendmail = "/usr/sbin/sendmail"; # chemin de sendmail |
|---|
| 122 |
$delai_max_process = 180; # nb de secondes maxi pour un process |
|---|
| 123 |
$ecart_alerte = 300; # nb de secondes minimums entre deux alertes de seuil (non pris en compte pour le kill d'un process ou le relancement d'un demon) |
|---|
| 124 |
$from = 'nsXXX <@nsXX.domaine.com>'; # expediteur du mail |
|---|
| 125 |
$joint_log = 1; # indique si on joint les logs de cette session au mail |
|---|
| 126 |
|
|---|
| 127 |
# ce que ce programme va gérer... |
|---|
| 128 |
%gestion = ( |
|---|
| 129 |
'reload_demons' => 1, # lancement des demons (liste $demons) |
|---|
| 130 |
'kill_process' => 1, # kill les process qui prennent plus de * minutes de temps cpu |
|---|
| 131 |
'seuil_alerte' => 1, # envoie une alerte quand une valeur dépasse son seuil |
|---|
| 132 |
'stop_alerte' => 1, # stoppe des programmes quand les seuils d'alerte atteignent le niveau 2 |
|---|
| 133 |
); |
|---|
| 134 |
|
|---|
| 135 |
# tuer les process root ? |
|---|
| 136 |
$kill_root_process = 1; # 1 permet de killer les process de root, 0 ne le permets pas |
|---|
| 137 |
|
|---|
| 138 |
# chemin d'accÚs au fichier de log si celui-ci ne doit pas se trouver dans le répertoire des données |
|---|
| 139 |
# exemple : $logfile = '/var/log/sys_alive.log'; |
|---|
| 140 |
$logfile = ''; |
|---|
| 141 |
|
|---|
| 142 |
# commande renvoyant l'activité processeur |
|---|
| 143 |
# exemple : $proc_activity = 'ps faux'; |
|---|
| 144 |
$proc_activity = 'ps faux'; |
|---|
| 145 |
|
|---|
| 146 |
# commande renvoyant l'activité mysql |
|---|
| 147 |
# exemple : $mysql_activity = ''/usr/bin/mysqladmin -pPASSROOTMYSQL status;/usr/bin/mysqladmin -pPASSROOTMYSQL processlist'; |
|---|
| 148 |
# mettre à blanc pour ne pas l'utiliser => $mysql_activity = ''; |
|---|
| 149 |
$mysql_activity = '/usr/bin/mysqladmin -u root -pPASSROOTMYSQL status; /usr/bin/mysqladmin -u root -pPASSROOTMYSQL processlist'; |
|---|
| 150 |
|
|---|
| 151 |
# commande renvoyant l'activité apache |
|---|
| 152 |
# exemple : $apache_activity = 'lynx -dump http://127.0.0.1/server-status'; # (nécessite lynx 2.8.4 ou plus) |
|---|
| 153 |
# mettre à blanc pour ne pas l'utiliser => $apache_activity = ''; |
|---|
| 154 |
$apache_activity = 'lynx -dump http://127.0.0.1/server-status'; # (pour un serveur ovh, remplacer server-status par ovh-status) |
|---|
| 155 |
|
|---|
| 156 |
1; #ne pas retirer |
|---|