Who's Online

Solaris Log Monitoring Script
Written by Luke MacNeil   
Sunday, 08 July 2007
I wrote this script a while back to automate watching our logs.
I don't even know if it still works, but I figured I'd post it here. It may be helpful to someone.
 
#!/bin/sh
###########################################################
# Log alert file, by Luke MacNeil. 11/09/2005
# This script is meant to be called from cron to monitor
# at whatever interval you like. 
 
# Summary of features. 
#
# checklog reports all new log file entries since its last run.
# it uses a tmp file to hold its history. the tmp file is specified
# by an argument.
# 
# usage= checklog /path/to/logfile /path/to/tmpfile
# ex. checklog /var/log/syslog /tmp/syslog.tmp
#
# checkdisk reports the status of the disk -
# usage= call with no arguments.
#
 
###########################################################
#Initalize Variables
###########################################################
 
# Path and name of the temporary file used to send the system report
REPORTLOG=/tmp/report.log 
 
# Set the hostname
HOSTNAME=`hostname` 
 
# The subject line that will be mailed to you
SUBJECT="Status report for $HOSTNAME" 
 
# The sender that will be mailed to you
FROM="Automated Reporting System" 
 
BREAKER="-------------------------------------------------------------------------"
TODAY=`date` #today's date.
 
###########################################################
touch $REPORTLOG #Create temporary report file.
###########################################################
#Actual log checking function, works on 3 parameters space delimted
###########################################################
checklog(){
  LOGFILE=$1 #Argument 1
  TMPFILE=$2 #Argument 2
 
  # Grabs the number of lines from the log
  CURRENTCOUNT=`awk 'END { print NR }' $LOGFILE` 
 
  echo ""
  echo "Preparing System Log Differential Report for $LOGFILE"
  # If tmp file doesnt exist create it. 
  # If it does, get the previous count.
    if [ -f $TMPFILE ] 
      then 
        TMPCOUNT=`cat $TMPFILE`
      else
        echo "Creating Temp File $TMPFILE"
        echo "$CURRENTCOUNT" > $TMPFILE
        TMPCOUNT=`cat $TMPFILE`
    fi 
 
  ###Compare counts.
  echo "Comparing...."
  echo "Old Count = $TMPCOUNT"
  echo "New Count = $CURRENTCOUNT"
 
  if [ $TMPCOUNT -eq $CURRENTCOUNT ]
    then
      echo "Nothing to report."
      echo ""
  else
    if [ $TMPCOUNT -lt $CURRENTCOUNT ]
      then
        echo "Old Count is Less than the Current Count"
        echo "Reporting new entries"
        DIFFERENCE=`expr $CURRENTCOUNT - $TMPCOUNT` # Get the difference between counts.
        NEWENTRIES="`tail -$DIFFERENCE $LOGFILE`" # Grab the new lines from the log.
        echo "Date: $TODAY" >> $REPORTLOG
        echo "Hostname: $HOSTNAME" >> $REPORTLOG
        echo $BREAKER >> $REPORTLOG      
        echo "$LOGFILE Report" >> $REPORTLOG
        echo "$NEWENTRIES" | sed G >> $REPORTLOG
        echo $BREAKER >> $REPORTLOG
        echo $CURRENTCOUNT > $TMPFILE #rewrite the tempfile to reflect the changes.
        echo ""
    fi
  fi
}
 
checkdisk(){
  df -k >> $REPORTLOG
}
 
############################################################
# Run the function on these different log files. Include 3 parameters.
# ex. chklog /path/to/log /path/to/tmpfile $REPORTLOG
# This is the section you want to modify if your adding/removing
# logs to monitor.
############################################################
 
checklog /var/log/syslog /tmp/syslog.tmp
checklog /var/adm/messages /tmp/messages.tmp
checklog /opt/SUNWwbsvr/https-bigadmin/logs/access /tmp/webaccess.tmp
checkdisk
 
#############################################################
# Mail the reported results
#############################################################
 
### Adjust to send/mail to who is needed (root by default)
cat $REPORTLOG | mailx -r "$FROM" -s "$SUBJECT" root 
echo "Report sent to root"
 
#############################################################
# Clean up report file.
#############################################################
rm $REPORTLOG
Comments
Add New Search
Write comment
Name:
Email:
 
Title:
Please input the anti-spam code that you can read in the image.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."