5551dd123d4cf304a5009f920c63451bde50c858
[mirror/dsa-nagios.git] / dsa-nagios-checks / event_handlers / dsa-eventhandler-restart-service
1 #!/bin/sh
2 #
3 # Event handler script for restarting a service on the local machine
4 #
5 # Note: This script will only restart the service if the service is
6 #       retried 3 times (in a "soft" state) or if the service somehow
7 #       manages to fall into a "hard" error state.
8
9 # Args:
10 # $1 $SERVICESTATE$
11 # $2 $SERVICESTATETYPE$
12 # $3 $SERVICEATTEMPT$
13 # $4 $HOSTADDRESS$
14 # $4 init script name
15
16 state="$1"
17 type="$2"
18 attempt="$3"
19 host="$4"
20 starton="$5"
21 service="$6"
22
23 # What state is the service in?
24 case "${state}" in
25         "${starton}")
26         # Aha!  The service appears to have a problem - perhaps we should restart it
27         # Is this a "soft" or a "hard" state?
28                 case "${type}" in
29                 # We're in a "soft" state, meaning that Nagios is in the middle of retrying the
30                 # check before it turns into a "hard" state and contacts get notified...
31                         SOFT)
32                         # What check attempt are we on?  We don't want to restart the service on the first
33                         # check, because it may just be a fluke!
34                                 case "${attempt}" in
35                                         # Wait until the check has been tried 3 times before restarting the service
36                                         # If the check fails on the 4th time (after we restart the service), the state
37                                         # type will turn to "hard" and contacts will be notified of the problem.
38                                         # Hopefully this will restart the service successfully, so the 4th check will
39                                         # result in a "soft" recovery.  If that happens no one gets notified because we
40                                         # fixed the problem!
41                                         3)
42                                                 # Call the init script to restart the HTTPD server
43                                                 /usr/lib/nagios/plugins/check_nrpe -n -H "${host}" -c "${service}"
44                                         ;;
45                                 esac
46                         ;;
47                         # The service somehow managed to turn into a hard error without getting fixed.
48                         # It should have been restarted by the code above, but for some reason it didn't.
49                         # Let's give it one last try, shall we?  
50                         # Note: Contacts have already been notified of a problem with the service at this
51                         # point (unless you disabled notifications for this service)
52                         HARD)
53                                 /usr/lib/nagios/plugins/check_nrpe -n -H "${host}" -c "${service}"
54                         ;;
55         esac
56         ;;
57 esac
58
59 exit 0