用shell做nginx日志分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用shell做nginx日志分析相关的知识,希望对你有一定的参考价值。
#!/bin/bash
if [[ $# == 0 ]];then
echo "Error:请输入要查询的天数???"
else
echo "暂时不支持centos的7的版本!!!"
NOW_TIME_CUO=date +%s
((END_TIME_CUO=${NOW_TIME_CUO}-echo $1*3600*24 | bc
))
NOW_TIME=date | awk ‘{print $3"\\\/"$2"\\\/"$NF}‘
END_TIME=date -d @${END_TIME_CUO}| awk ‘{print $3"\\\/"$2"\\\/"$NF}‘
##根据ip统计一段时间的UV
echo -e "\033[31mOutput $1 day‘s UV: \033[0m"
cat access.log|grep -v curl|sed -n "/${END_TIME}/,/${NOW_TIME}/p"| awk ‘{print $1}‘| sort| uniq -c| wc -l
##根据访问URL访问PV
echo -e "\033[31mOutput $1 day‘s PV: \033[0m"
cat access.log|grep -v curl|sed -n "/${END_TIME}/,/${NOW_TIME}/p"| awk ‘{print $7}‘| wc -l
##查询访问最频繁的URL
echo -e "\033[31mOutput $1 day‘s 10 HOT URL: \033[0m"
cat access.log|grep -v curl|sed -n "/${END_TIME}/,/${NOW_TIME}/p"| awk ‘{print $7}‘| sort|uniq -c|sort -n -k 1 -r|head
##查询访问最频繁的IP
echo -e "\033[31mOutput $1 day‘s 10 HOT IP: \033[0m"
cat access.log| grep -v curl|sed -n "/${END_TIME}/,/${NOW_TIME}/p"|awk ‘{print $1}‘|sort|uniq -c|sort -n -k 1 -r|head
fi
:<<DOWN
1、根据访问IP统计UV
awk ‘{print $1}‘ access.log | sort | uniq -c | wc -l
2、统计访问URL统计PV
awk ‘{print $7}‘ access.log | wc -l
3、查询访问最频繁的URL
awk ‘{print $7}‘ access.log | sort | uniq -c |sort -n -k 1 -r | more
4、查询访问最频繁的IP
awk ‘{print $1}‘ access.log | sort | uniq -c |sort -n -k 1 -r | more
5、根据时间段统计查看日志
cat access.log |sed -n ‘/14\/Mar\/2015:21/,/14\/Mar\/2015:22/p‘| more
DOWN
以上是关于用shell做nginx日志分析的主要内容,如果未能解决你的问题,请参考以下文章