.\" This file was originally generated by help2man 1.36.
.TH WATCHQUAGGA 8 "July 2010"
.SH NAME
watchquagga \- a program to monitor the status of quagga daemons
.SH SYNOPSIS
.B watchquagga
.RI [ option ...]
.IR daemon ...
.br
.B watchquagga
.BR \-h " | " \-v
.SH DESCRIPTION
.B watchquagga
is a watchdog program that monitors the status of supplied quagga
.IR daemon s
and tries to restart them in case they become unresponsive or shut down.
.PP
To determine whether a daemon is running, it tries to connect to the
daemon's VTY UNIX stream socket, and send echo commands to ensure the
daemon responds. When the daemon crashes, EOF is received from the socket,
so that watchquagga can react immediately.
.PP
This program can run in one of the following 5 modes:
.TP
.B Mode 0: monitor
In this mode, the program serves as a monitor and reports status changes.
.IP
Example usage: watchquagga \-d zebra ospfd bgpd
.TP
.B Mode 1: global restart
In this mode, whenever a daemon hangs or crashes, the given command is used
to restart all watched daemons.
.IP
Example usage: watchquagga \-dz \e
.br
-R '/sbin/service zebra restart; /sbin/service ospfd restart' \e
.br
zebra ospfd
.TP
.B Mode 2: individual daemon restart
In this mode, whenever a single daemon hangs or crashes, the given command
is used to restart this daemon only.
.IP
Example usage: watchquagga \-dz \-r '/sbin/service %s restart' \e
.br
zebra ospfd bgpd
.TP
.B Mode 3: phased zebra restart
In this mode, whenever a single daemon hangs or crashes, the given command
is used to restart this daemon only. The only exception is the zebra
daemon; in this case, the following steps are taken: (1) all other daemons
are stopped, (2) zebra is restarted, and (3) other daemons are started
again.
.IP
Example usage: watchquagga \-adz \-r '/sbin/service %s restart' \e
.br
\-s '/sbin/service %s start' \e
.br
\-k '/sbin/service %s stop' zebra ospfd bgpd
.TP
.B Mode 4: phased global restart for any failure
In this mode, whenever a single daemon hangs or crashes, the following
steps are taken: (1) all other daemons are stopped, (2) zebra is restarted,
and (3) other daemons are started again.
.IP
Example usage: watchquagga \-Adz \-r '/sbin/service %s restart' \e
.br
\-s '/sbin/service %s start' \e
.br
\-k '/sbin/service %s stop' zebra ospfd bgpd
.PP
Important: It is believed that mode 2 (individual daemon restart) is not
safe, and mode 3 (phased zebra restart) may not be safe with certain
routing daemons.
.PP
In order to avoid restarting the daemons in quick succession, you can
supply the
.B \-m
and
.B \-M
options to set the minimum and maximum delay between the restart commands.
The minimum restart delay is recalculated each time a restart is attempted.
If the time since the last restart attempt exceeds twice the value of
.BR \-M ,
the restart delay is set to the value of
.BR \-m ,
otherwise the interval is doubled (but capped at the value of
.BR \-M ).
.SH OPTIONS
.TP
.BR \-d ", " \-\-daemon
Run in daemon mode. When supplied, error messages are sent to Syslog
instead of standard output (stdout).
.TP
.BI \-S " directory" "\fR, \fB\-\-statedir " directory
Set the VTY socket
.I directory
(the default value is "/var/run/quagga").
.TP
.BR \-e ", " \-\-no\-echo
Do not ping the daemons to test whether they respond. This option is
necessary if one or more daemons do not support the echo command.
.TP
.BI \-l " level" "\fR, \fB\-\-loglevel " level
Set the logging
.I level
(the default value is "6"). The value should range from 0 (LOG_EMERG) to 7
(LOG_DEBUG), but higher number can be supplied if extra debugging messages
are required.
.TP
.BI \-m " number" "\fR, \fB\-\-min\-restart\-interval " number
Set the minimum
.I number
of seconds to wait between invocations of the daemon restart commands (the
default value is "60").
.TP
.BI \-M " number" "\fR, \fB\-\-max\-restart\-interval " number
Set the maximum
.I number
of seconds to wait between invocations of the daemon restart commands (the
default value is "600").
.TP
.BI \-i " number" "\fR, \fB\-\-interval " number
Set the status polling interval in seconds (the default value is "5").
.TP
.BI \-t " number" "\fR, \fB\-\-timeout " number
Set the unresponsiveness timeout in seconds (the default value is "10").
.TP
.BI \-T " number" "\fR, \fB\-\-restart\-timeout " number
Set the restart (kill) timeout in seconds (the default value is "20"). If
any background jobs are still running after this period has elapsed, they
will be killed.
.TP
.BI \-r " command" "\fR, \fB\-\-restart " command
Supply a Bourne shell
.I command
to restart a single daemon. The command string should contain the '%s'
placeholder to be substituted with the daemon name.
.IP
Note that
.B \-r
and
.B \-R
options are not compatible.
.TP
.BI \-s " command" "\fR, \fB\-\-start\-command " command
Supply a Bourne shell
.I command
to start a single daemon. The command string should contain the '%s'
placeholder to be substituted with the daemon name.
.TP
.BI \-k " command" "\fR, \fB\-\-kill\-command " command
Supply a Bourne shell
.I command
to stop a single daemon. The command string should contain the '%s'
placeholder to be substituted with the daemon name.
.TP
.BR \-R ", " \-\-restart\-all
When one or more daemons are shut down, try to restart them using the
Bourne shell command supplied on the command line.
.IP
Note that
.B \-r
and
.B \-R
options are not compatible.
.TP
.BR \-z ", " \-\-unresponsive\-restart
When a daemon is in an unresponsive state, treat it as being shut down for
the restart purposes.
.TP
.BR \-a ", " \-\-all\-restart
When zebra hangs or crashes, restart all daemons taking the following
steps: (1) stop all other daemons, (2) restart zebra, and (3) start other
daemons again.
.IP
Note that this option also requires
.BR \-r ,
.BR \-s ,
and
.B \-k
options to be specified.
.TP
.BR \-A ", " \-\-always\-all\-restart
When any daemon (i.e., not just zebra) hangs or crashes, restart all
daemons taking the following steps: (1) stop all other daemons, (2) restart
zebra, and (3) start other daemons again.
.IP
Note that this option also requires
.BR \-r ,
.BR \-s ,
and
.B \-k
options to be specified.
.TP
.BI \-p " filename" "\fR, \fB\-\-pid\-file " filename
Set the process identifier
.I filename
(the default value is "/var/run/quagga/watchquagga.pid").
.TP
.BI \-b " string" "\fR, \fB\-\-blank\-string " string
When the supplied
.I string
is found in any of the command line option arguments (i.e.,
.BR \-r ,
.BR \-s ,
.BR \-k ,
or
.BR \-R ),
replace it with a space.
.IP
This is an ugly hack to circumvent problems with passing the command line
arguments containing embedded spaces.
.TP
.BR \-v ", " \-\-version
Display the version information and exit.
.TP
.BR \-h ", " \-\-help
Display the usage information and exit.
.SH SEE ALSO
.BR zebra (8),
.BR bgpd (8),
.BR isisd (8),
.BR ospfd (8),
.BR ospf6d (8),
.BR ripd (8),
.BR ripngd (8)
.PP
See the project homepage at <http://www.quagga.net/>.
.SH AUTHORS
Copyright 2004 Andrew J. Schorr
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>