In questo post ho illustrato il codice di uno scrip da me realizzato, in grado di ripulire il sistema dai processi zombie. Ora vedremo come fare ad integrare, sotto forma di event handler, il predetto scrip con Nagios. Per prima cosa è necessario creare l’event handler vero e proprio (che funge da wrapper), il quale richiamerà lo scrip clean_zombies in caso di necessità:
#!/bin/bash case "$1" in OK) ;; WARNING) ;; UNKNOWN) ;; CRITICAL) case "$2" in SOFT) case "$3" in 3) echo -n "Cleaning zombie processes (3rd soft critical state)..." usr/bin/sudo /root/scrips/clean_zombies ;; esac ;; HARD) echo -n "Cleaning zombie processes (3rd soft critical state)..." usr/bin/sudo /root/scrips/clean_zombies ;; esac ;; esac exit 0
Successivamente occorre creare un apposito comando all’interno del file /etc/nagios/object/commands.cfg:
# 'auto_clean_zombies' command definition define command { command_name auto_clean_zombies command_line /usr/lib64/nagios/plugins/eventhandlers/auto_clean_zombies $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ }
A questo punto possiamo assegnare l’event handler al servizio Total Processes definito nel file di configurazione dell’host per il quale si intende monitorare il numero dei processi:
define service{ use local-service host_name localhost service_descripion Total Processes event_handler auto_clean_zombies check_command check_local_procs!280!400!RSZDT }
Inoltre, affinchè l’untente nagios possa lanciare il suddetto scrip senza che vi sia la necessità di inserire la password di autenticazione, occorre editare il file /etc/sudoers nel seguente modo:
nagios ALL=NOPASSWD: /root/scrips/clean_zombies
Ricarichiamo la configurazione di Nagios:
[root@linuxbox ~]# service nagios reload
ed abbiamo finito. Alla prossima.