feat: arguments and file aggregation
Early work, going to wait a few days for my new box to get enough data to run this properly.
This commit is contained in:
parent
b9a27f343d
commit
8919943cc5
1 changed files with 65 additions and 0 deletions
65
nginx-popular-paths.sh
Normal file
65
nginx-popular-paths.sh
Normal file
|
@ -0,0 +1,65 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Nginx Popular Paths
|
||||
# Just a simple script to mine Nginx logs to find the most popular paths.
|
||||
#
|
||||
# Usage:
|
||||
# ./nginx-popular-paths.sh [-L|--logfile <file>] [-D|--days <n>] [-C|--count <n>]
|
||||
#
|
||||
# Author: Josh Sherman (joshtronic.com)
|
||||
# Link: https://git.sherver.org/joshtronic/nginx-popular-paths
|
||||
# License: MIT
|
||||
|
||||
# Argument defaults
|
||||
LOGFILE='/var/log/nginx/access.log'
|
||||
DAYS=30
|
||||
COUNT=10
|
||||
|
||||
# Parse any arguments
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-C|--count)
|
||||
COUNT="$2"
|
||||
shift 2
|
||||
;;
|
||||
-D|--days)
|
||||
DAYS="$2"
|
||||
shift 2
|
||||
;;
|
||||
-L|--logfile)
|
||||
LOGFILE="$2"
|
||||
shift 2
|
||||
;;
|
||||
-*)
|
||||
echo "Unknown option: $1" >&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Stand up and tear down our temp file
|
||||
TMPFILE=$(mktemp)
|
||||
trap 'rm -f "$TMPFILE"' EXIT
|
||||
|
||||
# Start with the base logfile
|
||||
[[ -f "$LOGFILE" ]] && cat "$LOGFILE" >> "$TMPFILE"
|
||||
|
||||
# Look for additional logfiles and archives
|
||||
for i in $(seq 1 99); do
|
||||
RAWFILE="$LOGFILE.$i"
|
||||
GZFILE="$LOGFILE.$i.gz"
|
||||
|
||||
if [[ -f "$RAWFILE" ]]; then
|
||||
cat "$RAWFILE" >> "$TMPFILE"
|
||||
elif [[ -f "$GZFILE" ]]; then
|
||||
zcat "$GZFILE" >> "$TMPFILE"
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# DEBUG: Log the new file
|
||||
cat $TMPFILE
|
Loading…
Add table
Add a link
Reference in a new issue