Please see the following KB article which discusses, more generally, approaches to monitoring Dbvisit Standby:
http://support.dbvisit.com/hc/en-us/articles/216296578-Monitoring-Standby
The following script, to monitor Dbvisit Standby with Nagios, was contributed by a customer and the original discussion can be found HERE. This is not maintained by Dbvisit and is provided only as an example.
First we need sudo privileges if not already enabled. Edit the /etc/sudoers
and add the following entry under User privilege specification
:
nagios ALL=(oracle) NOPASSWD: /usr/local/dbvisit/dbv_oraStartStop
This is needed because the script (dbv_oraStartStop
) only works under the user oracle. Next copy the lines below and save it under check_dbvisit
in your nagios/lib/plugins
directory and make it executable:
#!/bin/sh
# michael(at)weckerlein-edv.de
# 03/14/2007
# This Nagios plugin was created to check Dbvisit Standby technology status.
PROGNAME=basename $0
PROGPATH=echo $0 | sed -e 's,[\\/][^\\/][^\\/]\*$,,'
REVISION=echo '$Revision: 1.00 $' | sed -e 's/[^0-9.]//g'
. $PROGPATH/utils.sh
print_usage() {
echo "Usage:"
echo " $PROGNAME --status <ORACLE\_SID>"
echo " $PROGNAME --help"
echo " $PROGNAME --version"
}
print_help() {
print_revision $PROGNAME $REVISION
echo ""
print_usage
echo ""
echo "Check DBVISIT status"
echo ""
echo "--status SID"
echo " Check the state of the Database"
echo " and print out the state standby or Primary"
}
case "$1" in
1)
cmd='--status'
;;
*)
cmd="$1"
;;
esac
# Information Options
case "$cmd" in
--help)
print_help
exit $STATE_OK
;;
-h)
print_help
exit $STATE_OK
;;
--version)
print_revision $PLUGIN $REVISION
exit $STATE_OK
;;
-V)
print_revision $PLUGIN $REVISION
exit $STATE_OK
;;
esac
case "$cmd" in
--status)
dbvchk=sudo -u oracle /usr/local/dbvisit/dbv\_oraStartStop status $2
dbvchk2=echo $dbvchk | grep -c up
if [ ${dbvchk2} -eq 1 ] ; then
dbvchk3=`sudo -u oracle /usr/local/dbvisit/dbv_oraStartStop status $2 |
echo "OK - $dbvchk3"
exit $STATE_OK
else
dbvchk3=`sudo -u oracle /usr/local/dbvisit/dbv_oraStartStop status $2 |
echo "ERROR - $dbvchk3"
exit $STATE_CRITICAL
fi
;;
esac
Edit your Nagios configuration file (normally it is /etc/nagios2/command.cfg
). Make a new command entry check_dbvist --status $ARG1$
like this:
define command {
command_name check_dbvisit
command_line $USER1$/check_dbvisit --status $ARG1$
}
In your host configuration add a service entry like this:
#Check Oracle DB <SID> DBVISIT state
define service{
use generic-service ; Name of service template to use
host_name oracle1
service_description ORACLE STANDBY STATE
check_command check_dbvisit!<SID>
}
Change the <SID>
with your database name. When using NRPE edit the /etc/nagios/nrpe.cfg
file and add the command:
command[check_dbvisit]=/usr/lib/nagios/plugins/check_dbvisit --status <SID>
and add on your Nagios Masterserver a service entry:
#Check Oracle DB <SID> DBVISIT state
define service{
use generic-service ; Name of service template to use
host_name oracle1
service_description ORACLE STANDBY STATE
check_command check_nrpe!check_dbvisit
}
When you use the check_oracle.sh
plugin you get errors on the Standby Database because its not open and no login was accepted. I have managed this by adding a few lines in the script. At line 177 add:
--login)
if [ -f /usr/local/dbvisit/dbvisit ]; then
dbvchk=sudo -u oracle /usr/local/dbvisit/dbv\_oraStartStop status $2
dbvchk2=echo $dbvchk | grep -c Standby
if [ ${dbvchk2} -eq 1 ] ; then
echo "OK - Database is in Standby mode no login"
exit $STATE_OK
fi
else
....
fi
"fi" <-- without quotemarks
;
Don't forget the fi at the end of the section --login also at line 198.
--cache)
if [ -f /usr/local/dbvisit/dbvisit ]; then
dbvchk=sudo -u oracle /usr/local/dbvisit/dbv\_oraStartStop status $2
dbvchk2=echo $dbvchk | grep -c Standby
if [ ${dbvchk2} -eq 1 ] ; then
echo "OK - Database is in Standbymodus and not open"
exit $STATE_OK
fi
else
....
fi
"fi" <-- without quotemarks
;
Thats all. When your Nagiosuser is in the dba group it checks if the file dbvisit exists in /usr/local/dbvisit
and then runs the dbv_oraStartStop --status
. When the return code is standby it breaks the script and returns a exit$State OK
to nagios.
Mike Donovan October 15, 2014 12:57
Comments