====== Nagios Plugin to Count lines in HTTP Logs for the previous minute ====== Obsoleted: Check [[plugin_http_metrics|Nagios HTTP Metrics]] #!/bin/bash # # Count Apache access log line count # Written by Senthil Nathan # Last Modified: Dec 8th 2015 # # Usage: ./access_count -f access_log_file -w Count Warn -c Count Critical # # Description: Count the number of lines in apache access log for the previous minute # # This plugin is to check the lines generated by the log in the previosu minute # Assumes apache log time stamp of format "%d/%b/%Y:%H:%M" # E.g. 08/Dec/2015:10:55:15 # # Output: # # Count is OK/Warning/Critical|'Access Count'=xxxxxx;nnnnnn;mmmmmm;0 # # Examples: # # Warn if total access count / minute > 10000 # Critical if total access count > 20000 # access_count -f /opt/apache2/HTTPServer12/logs/rts1prd-app_access_log -w 10000 -c 20000 # # PROGNAME=`/bin/basename $0` PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` REVISION="1.0" . $PROGPATH/utils.sh check_root() { # make sure script is running as root if [ `whoami` != root ]; then echo "UNKNOWN: please make sure script is running as root" exit $STATE_UNKNOWN fi } print_usage() { echo "Usage: $PROGNAME -f -w -c " echo "Usage: $PROGNAME --help" echo "Usage: $PROGNAME --version" } print_revision() { echo "Program: $PROGNAME" echo "Version: $REVISION" } print_help() { print_revision echo "" print_usage echo "" echo "Check total access log count for the previous minute for Nagios" echo "" } # Check user is root (not required) #check_root # Make sure the correct number of command line # arguments have been supplied if [ $# -lt 1 ]; then print_usage exit $STATE_UNKNOWN fi # Grab the command line arguments exitstatus=$STATE_WARNING #default while test -n "$1"; do case "$1" in --help) print_help exit $STATE_OK ;; -h) print_help exit $STATE_OK ;; --version) print_revision exit $STATE_OK ;; -V) print_revision exit $STATE_OK ;; --warning) thewarn=$2 shift ;; -w) thewarn=$2 shift ;; --critical) thecrit=$2 shift ;; -c) thecrit=$2 shift ;; -f) thefile=$2 shift ;; --filename) thefile=$2 shift ;; *) echo "Unknown argument: $1" print_usage exit $STATE_UNKNOWN ;; esac shift done # Validate arguments if [ -z $thecrit ]; then print_usage exit $STATE_UNKNOWN fi if [ -z $thewarn ]; then print_usage exit $STATE_UNKNOWN fi if [ -z $thefile ]; then print_usage exit $STATE_UNKNOWN fi # Check begins here # declare -i accesscount PMIN=`date --date '-1 min' +"%d/%b/%Y:%H:%M"` accesscount=`grep -c $PMIN $thefile` # if [ $accesscount -ge $thecrit ]; then echo "Access Count Total is Critical|'Access Count Total'=${accesscount};${thewarn};${thecrit};0" exit $STATE_CRITICAL fi if [ $accesscount -ge $thewarn ]; then echo "Access Count Total is Warning|'Access Count Total'=${accesscount};${thewarn};${thecrit};0" exit $STATE_WARNING fi if [ $accesscount -lt $thewarn ]; then echo "Access Count Total is OK|'Access Count Total'=${accesscount};${thewarn};${thecrit};0" exit $STATE_OK fi # echo "Access Count Check Unknown" exit $STATE_UNKNOWN