Fork me on GitHub
瞬间的惊奇真是种确幸,每种确幸都是支玄妙的俳句。吊桥抬起,退回到内心幽静的花园,邂逅的还是那种熟悉的冷冷清清又轰轰烈烈的美妙质感。这真令人欢喜。

Nginx日志分析

对于nginx以下日志来说:

log_format  main  '$remote_addr - $remote_user  [$time_local]  "$request" '

                             ' $status $body_bytes_sent "$http_referer" '

                             ' "$http_user_agent"  $request_time ';

 

1,统计Nginx服务器 独立IP数

awk '{print $1}' access.log | sort - r | uniq -c | wc -l

 

2,统计Nginx服务器总PV量

awk '{print $7}' access.log | wc -l

 

3,统计Nginx服务器UV量

awk '{print $11}' access.log | sort -r | uniq -c | wc -l

 

4,分析Nginx访问日志截至目前为止访问量前20的IP列表

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20

 

5,分析Nginx访问日志早上9点到下午6点的总请求量

sed -n "/2018:09:00/,/2018:18:00/"p access.log

awk '/2018:09:00/,/2018:18:00/' access.log | wc -l

 

6,分析Nginx访问日志总的独立IP数

awk '{print $1}' access.log |sort | uniq -c | wc -l

 

7,分析Nginx访问日志状态吗,404,502,503,500,301,302,打印出现次数大于20的IP 地址

awk '{if ($9~/502|404|503|302|301|499/) print $1,$9}' access.log |sort | uniq -c |sort -nr | awk '{if ($1>20) print $2}'

 

8,分析Nginx访问最多的页面

awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -20

 

9,分析Nginx访问日志请求处理时间大于5s的URL,并打印出时间,URL,访客,IP

awk '{if ($NF >5) print $NF,$7,$1}' access.log | sort -nr | more

 

 

日志切割:

#!/bin/bash

#nginx log shell

FILE_LOG= /usr/local/nginx/logs/access.log

BACK_LOG= /data/backup/'date +%Y%m%d'

echo -e "Please wait start cut shell scripts"

sleep 2

if [ ! -d $BACK_LOG]; then

mkdir -p $BACK_LOG

fi

mv $FILE_LOG $BACK_LOG

kill -USR1 'cat /run/nginx/nginc.pid'

echo "===============^-^==============="

echo "The Nginx log Cutting Successfully!"

 

crontab -e

0 0 * * * /bin/sh /data/nginx_cut_log.sh >>/tmp/nginx_cut.log 2 >&1

posted @ 2018-12-04 13:33  干嘛那么贪睡  阅读(476)  评论(0)    收藏  举报