Nagios plugin for ASE

From SybaseWiki
Revision as of 21:08, 17 December 2007 by Psap (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.