Differences

This shows you the differences between two versions of the page.

Link to this comparison view

tech:nagios:plugin_http_response_time [2018/05/03 06:27] (current)
Line 1: Line 1:
 +====== Nagios plugin - average response time for previous minute ======
 +Obsoleted: Check [[plugin_http_metrics|Nagios HTTP Metrics]]
 +<code bash>
 +#!/bin/bash
 +#
 +# Average Apache response time
 +# Written by Senthil Nathan
 +# Last Modified: Dec 9th 2015
 +#
 +# Usage: ./​http_response_time -f access_log_file -w Count Warn -c Count Critical
 +#
 +# Description:​ Average response time in apache access log for the previous minute
 +#
 +# This plugin is to sum and computer the average response time for previous minute
 +# Assumes apache log time stamp of format "​%d/​%b/​%Y:​%H:​%M"​
 +# E.g. 08/​Dec/​2015:​10:​55:​15
 +# Assumes the time in microseconds is the 11th field delimited by space
 +#
 +# Output:
 +#
 +#  Response time is OK/​Warning/​Critical|'​Response Time'​=xxxxxxus;​nnnnnn;​mmmmmm;​0
 +#
 +# Examples:
 +#
 +#   Warn if response time is > 100000 micro seconds
 +#   ​Critical if response time is > 150000 micro seconds
 +#   ​http_response_time -f /​opt/​apache2/​HTTPServer12/​logs/​rts1prd-app_access_log -w 100000 -c 150000
 +#
 +#
 +
 +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 <access log file path> -w <warning response time> -c <​critical response time>"​
 +    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 response time 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
 +                                           
 +        --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 responsetime
 +PMIN=`date --date '-1 min' +"​%d/​%b/​%Y:​%H:​%M"​`
 +responsetime=`grep $PMIN $thefile|awk '{ sum += $11; n++ } END { if (n > 0) printf("​%d",​ sum / n); }'`
 +
 +#if [ $? -eq 1 ]; then
 +#  echo "​Response Time Check Error"
 +#  exit $STATE_UNKNOWN
 +#fi
 +#
 +if [ $responsetime -ge $thecrit ]; then
 +  echo "​Response Time is Critical|'​Response Time'​=${responsetime}us;​${thewarn};​${thecrit};​0"​
 +  exit $STATE_CRITICAL
 +fi
 +if [ $responsetime -ge $thewarn ]; then
 +  echo "​Response Time is Warning|'​Response Time'​=${responsetime}us;​${thewarn};​${thecrit};​0"​
 +  exit $STATE_WARNING
 +fi
 +if [ $responsetime -lt $thewarn ]; then
 +  echo "​Response Time is OK|'​Response Time'​=${responsetime}us;​${thewarn};​${thecrit};​0"​
 +  exit $STATE_OK
 +fi
 +#
 +echo "​Response time Check Unknown"​
 +exit $STATE_UNKNOWN
 +
 +</​code>​
  

QR Code
QR Code tech:nagios:plugin_http_response_time (generated for current page)