#!/bin/bash
#< Check tomcat response times and generate a report
AWK="/usr/bin/awk"
BASENAME="/usr/bin/basename"
DATE="/usr/bin/date"
ECHO="/usr/bin/echo"
SORT="/usr/bin/sort"
LOG_ROOT="/var/log/tomcat5"
LOG_PREFIX="somesite_access_log"
LOG_SUFFIX="txt"
SORT_KEY=2
THIS_PROG="$( ${BASENAME} $0 )"
TMP_DIR="/tmp"
VERBOSE=0
function printv {
(( VERBOSE )) && ${ECHO} " : $@"
}
function print_error {
${ECHO} "Error: $@" >&2
}
function print_usage {
{
${ECHO} "Usage: ${THIS_PROG} [-huv] [-l <logfile>]"
${ECHO} " -h Display this help message"
${ECHO} " -l Specify log file (default is todays)"
${ECHO} " -u Sort by URL instead of response time"
${ECHO} " -v Verbose mode"
} >&2
}
function check_logfile_exists {
if [ -z "${LOG_FILE}" ]; then
LOG_FILE="${LOG_ROOT}/${LOG_PREFIX}.$( ${DATE} +%Y-%m-%d ).txt"
fi
printv "Checking log: ${LOG_FILE}"
if [ ! -e "${LOG_FILE}" ]; then
print_error "${LOG_FILE} does not exist" && exit 1
fi
if [ ! -f "${LOG_FILE}" ]; then
print_error "${LOG_FILE} not a regular file" && exit 1
fi
if [ ! -r "${LOG_FILE}" ]; then
print_error "${LOG_FILE}: Permission denied" && exit 1
fi
}
function parse_logfile {
if [ "${SORT_KEY}" -eq "1" ]; then
${AWK} '{print $7,$12}' ${LOG_FILE} | ${SORT} -k${SORT_KEY},${SORT_KEY} -k$(( SORT_KEY + 1 )),$(( SORT_KEY + 1 ))rn
else
${AWK} '{print $7,$12}' ${LOG_FILE} | ${SORT} -k${SORT_KEY},${SORT_KEY}rn
fi
}
#
# main()
#
while getopts ":hl:uv" OPTION; do
case ${OPTION} in
"h") print_usage && exit 0 ;;
"l") LOG_FILE="${OPTARG}" ;;
"u") SORT_KEY=1 ;;
"v") VERBOSE=1 ;;
* ) print_usage && exit 1 ;;
esac
done
shift $(( ${OPTIND} - 1 ))
if [ "$#" -ne "0" ]; then
print_usage && exit 1
fi
check_logfile_exists
parse_logfile
exit 0