Nagios plugin for ASE
When you are using Nagios (http://www.nagios.org) as a monitoring tool, it's real easy to implement your own checks for Sybase servers. Here's a sample check to see if your ASE server is up and connectable.
Create Nagios check script
#!/bin/sh
# Plugin for Nagios to check if an ASE is up
# Author Peter Sap (www.petersap.nl)
# All disclamers apply.
if [ $# -ne 1 ]
then
echo "Usage $0: <ASE server>"
exit 1
fi
SERVER=$1
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
export SYBASE=<location of OpenClient software>
export SYBASE_OCS=OCS-15_0
$SYBASE/$SYBASE_OCS/bin/isql -Unagios -Pnagios -S${SERVER} -b<<EOF > /tmp/$$
set nocount on
go
select count(*)
from master..sysprocesses
where suid != 0
go
EOF
if [ `head -n 1 /tmp/$$|grep "CT-LIBRARY"|wc -l` -gt 0 ]
then
rm -f /tmp/$$
echo "Could not connect to ${SERVER}."
exit ${STATE_CRITICAL}
fi
if [ `head -n 1 /tmp/$$|grep "^Msg "|wc -l` -gt 0 ]
then
MSG=`head -n 3 /tmp/$$|tail -n 1`
rm -f /tmp/$$
echo "Could not connect to ${SERVER}, ${MSG}"
exit ${STATE_CRITICAL}
fi
COUNT=`cat /tmp/$$`
rm -f /tmp/$$
echo "Server ${SERVER} up," ${COUNT} "active sessions (including workers)"
exit ${STATE_OK}
Store this script in the Nagios libexec directory with the name "check_sybase_ase_up" . Do a "chmod +x" to make it executable.
Setup Sybase environment
Check that the servers you want to monitor are defined in the $SYBASE/interfaces file. Sample:
ASE1 query tcp ether prd-syb-ase1 4000
The interfaces file must be stored on the machine where Nagios is running.
Log on to the ASE server and add a login that will be used by Nagios to connect to the ASE.
isql -Usa -SASE1 1> sp_addlogin nagios,nagios 2> go Password correctly set. Account unlocked. New login created. (return status = 0) 1>
Edit Nagios files
Define the "check_sybase_ase_up" script in the definition file for commands, e.g. checkcommands.cfg
# 'check_sybase_ase_up' command definition
define command{
command_name check_sybase_ase_up
command_line $USER1$/check_sybase_ase_up $ARG1$
}
Now you can use the command as a service check. Add this sample to the definition file for your checks, to check the ASE1 server.
define service{
use generic-service
host_name prd-syb-ase1
service_description ASE1
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_sybase_ase_up!ASE1
}
Restart Nagios.