Archive

Archive for the ‘Nagios’ Category

Oracle – LGWR


Oracle LGWR *(Logwriter) is a background process that writes the redo log buffer to the online redo log files. It is started automatically when the database instance is started. If the online redo log files are mirrored, LGWR will write to all the group members simultaneously.

LGWR writes to the redo log files in the following circumstances:

  • A user commits a transaction
  • An online redo log switch occurs
  • Three seconds have passed since LGWR last wrote
  • The redo log buffer is one third full or contains 1MB of buffered data
  • DWBn must write modified buffers to the disk

Further Reading:

http://download.oracle.com/docs/cd/E14072_01/server.112/e10713/process.htm#BABJEHBC

Perl – A nagios script for checking disk space by percentage or size

June 14, 2011 2 comments

There is currently an .exe script for linux/aix machines that run nagios to check disk size usage by size. However, the script for Windows only allows a percentage input. The perl script below has been created to allow for checking either percentage of disk used or when the available disk size is lower than the threshold.

#!/usr/bin/perl
################################################################################
# Job Name : check_disk
# System : AIX, Windows, Linux
# Author : Kerri Robberts
# Date : 14-Jun-2011
# Version : 1.0
#
# Description : Script to check disk size either by % used or MB threshold, written for Nagios
#
# Preceding Job : None
#
# Following Job :
#
# Parameters : Command line parameters available within the script.
# -d Disk name
# -cp Critical percentage
# -cs Critical size
# -wp Warning percentage
# -ws Warning size
#
# Exit Codes : 0 OK
# 1 Warning threshold reached
# 2 Critical threshold reached
#
# Nagios check_command: # 'check_disk command definition
# define command{
# command_name check_disk
# command_line $USER1$/check_disk --d $ARG1$ -wp $ARG2$ -ws $ARG3$ -cp $ARG4$ -cs $ARG5$
# }
#
# Example host.cfg entry:
# define service{
# use IC-local-service ; Name of service template to use
# host_name ln1dev09
# service_description DISK: Drive {C}
# check_command check_disk!C!95!500!99!300
# }
################################################################################
# Change History
################################################################################
# Version Author Date Change & Reason
# ------- ------ --------- ---------------
# 1.0 Krobbe 14-Jun-11 Initial Version
################################################################################
use warnings;
use strict;
use Getopt::Long;
my $DISC => undef;
my $WARNS => undef;
my $WARNP => undef;
my $CRITS => undef;
my $CRITP => undef;
my $AVAILABLE => undef;
my $TOTAL => undef;
my $USED => undef;
my $USEDP => undef;
my $USEDS => undef;
my $OK = 0;
my $WARNING = 1;
my $CRITICAL = 2;
my $UNKNOWN = 3;
GetOptions (
'disc|d=s' => \$DISC,
'warnsize|ws:s' => \$WARNS,
'warnper|wp=s' => \$WARNP,
'critsize|cs:s' => \$CRITS,
'critper|cp=s' => \$CRITP);
if (defined (($WARNP || $WARNS)&&($CRITP || $CRITS))) {
check();
}
sub check {
my $OSNAME = `uname|awk '{printf \$1}'`;
if ($OSNAME eq 'AIX') {
my $DFCMD = "df -k | grep $DISC | grep -v $DISC/ ";
$AVAILABLE = `$DFCMD | awk '{ printf \$3}'`;
$USED = `$DFCMD | awk '{ printf \$4}'`;
$TOTAL = `$DFCMD | awk '{ printf \$2}'`;
}
elsif ($OSNAME eq 'Linux') {
my $DFCMD = "df -k | grep $DISC | grep -v $DISC/ ";
$AVAILABLE = `$DFCMD | awk '{ printf \$3}'`;
$USED = `$DFCMD | awk '{ printf \$4}'`;
$TOTAL = `$DFCMD | awk '{ printf \$1}'`;
}
else {
my $DFCMD = "df -k | grep $DISC: | grep -v $DISC:/ ";
$AVAILABLE = `$DFCMD | awk '{ printf \$4}'`;
$USED = `$DFCMD | awk '{ printf \$5}'`;
$TOTAL = `$DFCMD | awk '{ printf \$2}'`;
}
$TOTAL = sprintf("%.2f",($TOTAL / 1024));
$USEDS = sprintf("%.2f",($TOTAL - ($AVAILABLE/1024)));
my $CRITPER = sprintf("%.2f",($TOTAL) * ($CRITP/100));
my $CRITSIZE = sprintf("%.2f",(($TOTAL) - $CRITS));
my $WARNPER = sprintf("%.2f",($TOTAL) * ($WARNP/100));
my $WARNSIZE = sprintf("%.2f",(($TOTAL) - $WARNS));
if (($CRITSIZE >= $CRITPER) && ($CRITSIZE <= $USEDS)) {
print "DISC CRITICAL - usage: $DISC: $USEDS MB ($USED of total $TOTAL MB)\n";
exit $CRITICAL;
}
elsif (($CRITPER >=$CRITSIZE) && ($CRITPER <= $USEDS)) {
print "DISC CRITICAL - usage: $DISC: $USEDS MB ($USED of total $TOTAL MB)\n";
exit $CRITICAL;
}
elsif (($WARNSIZE >= $WARNPER)&&($WARNSIZE <= $USEDS)) {
print "DISC WARNING - usage: $DISC: $USEDS MB ($USED of total $TOTAL MB)\n";
exit $WARNING;
}
elsif (($WARNPER >= $WARNSIZE) &&( $WARNPER <= $USEDS)) {
print "DISC WARNING - usage: $DISC: $USEDS MB ($USED of total $TOTAL MB)\n";
exit $WARNING;
}
else {
print "DISC OK - usage: $DISC: $USEDS MB ($USED of total $TOTAL MB)\n\n";
exit $OK;
}
};