Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcbrunet/703310bea5e1ffdba57cac3608c4d106 to your computer and use it in GitHub Desktop.
Save marcbrunet/703310bea5e1ffdba57cac3608c4d106 to your computer and use it in GitHub Desktop.
#!/bin/bash
# variables
LOGFILE="/var/log/nginx/access.log"
LOGFILE_GZ="/var/log/nginx/access.log.*"
RESPONSE_CODE="200"
# functions
filters(){
grep -w $RESPONSE_CODE \
| grep -v "\/rss\/" \
| grep -v robots.txt \
| grep -v "\.css" \
| grep -v "\.jss*" \
| grep -v "\.png" \
| grep -v "\.ico"
}
filters_404(){
grep -w "404"
}
request_ips(){
awk '{print $1}'
}
request_method(){
awk '{print $6}' \
| cut -d'"' -f2
}
request_pages(){
awk '{print $7}'
}
wordcount(){
sort \
| uniq -c
}
sort_desc(){
sort -rn
}
return_kv(){
awk '{print $1, $2}'
}
request_pages(){
awk '{print $7}'
}
return_top_ten(){
head -10
}
## actions
get_request_ips(){
echo ""
echo "Top 10 Request IP's:"
echo "===================="
cat $LOGFILE \
| filters \
| request_ips \
| wordcount \
| sort_desc \
| return_kv \
| return_top_ten
echo ""
}
get_request_methods(){
echo "Top Request Methods:"
echo "===================="
cat $LOGFILE \
| filters \
| request_method \
| wordcount \
| return_kv
echo ""
}
get_request_pages_404(){
echo "Top 10: 404 Page Responses:"
echo "==========================="
zgrep '-' $LOGFILE $LOGFILE_GZ\
| filters_404 \
| request_pages \
| wordcount \
| sort_desc \
| return_kv \
| return_top_ten
echo ""
}
get_request_pages(){
echo "Top 10 Request Pages:"
echo "====================="
cat $LOGFILE \
| filters \
| request_pages \
| wordcount \
| sort_desc \
| return_kv \
| return_top_ten
echo ""
}
get_request_pages_all(){
echo "Top 10 Request Pages from All Logs:"
echo "==================================="
zgrep '-' --no-filename $LOGFILE $LOGFILE_GZ \
| filters \
| request_pages \
| wordcount \
| sort_desc \
| return_kv \
| return_top_ten
echo ""
}
# executing
get_request_ips
get_request_methods
get_request_pages
get_request_pages_all
get_request_pages_404
@Tronde
Copy link

Tronde commented Sep 7, 2021

Hi,
the function request_pages() is specified twice in this script. Please check lines 32-34 and 49-51.

Regards,
Tronde

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment