nginx日志截取

Linux下日志分析与状态查看方法
apache日志格式为:
172.16.7.137 - - [24/Nov/2016:13:57:50 +0800] "GET /p.php?act=rt&callback=jQuery17039=1479967070687 HTTP/1.1" 404 281 "http://172.16.7.200/p.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
 
(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
 
nginx日志格式为:
172.16.7.137 - - [24/Nov/2016:13:57:28 +0800] "GET /p.php?act=rt&callback=jQuery17039=1479967048686 HTTP/1.1" 200 416 "http://172.16.7.200/p.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
 
(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" -
 
awk '{print $1}' apache_log |sort |uniq -c|sort -nr|head -n 10
awk 首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数。
head进行前十名筛选;
sort -nr按照数字进行倒叙排序。
 
1.查看最后日志十行。
# tail -n 10 access.log
 
2.访问次数最多的10个IP。
# tail -n 20 access.log | awk '{print $1}' |sort |uniq -c|sort -nr|head -n 10
 
3.显示10条最常用的命令。
# sed -e "s/\|/n/g" ~/.bash_history | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head
 
4.找出在哪几分钟访问次数最多。
# cat access.log | awk '{print $4}' |cut -c 14-18|sort|uniq -c|sort -nr|head
 
5.访问次数最多的页面。
# cat access.log|grep "24/Nov/2016"|awk '{print $11}'|sort|uniq -c|sort -rn|head
# cat access.log | grep "27/Dec/2016" | grep "111.151.168.154" |awk '{print $11}'|sort|uniq -c|sort -rn|head
 
6.查看某个时间内访问最多的IP。
# cat access.log | awk '$4 >="[24/Nov/2016:02:20" && $4 <="[24/Nov/2016:03:40"'| awk '{print $1}' | sort | uniq -c
 
一天访问最多的IP
# cat access.log | grep '27/Dec/2016' | awk '{print $1}' | sort | uniq -c | sort -nr|head
 
在日志中找出访问次数最多(负载最重)的几个时间段(以分钟为单位)。
1,查看apache进程:
ps aux | grep nginx | grep -v 'grep' | wc -l
 
2,查看80端口的tcp连接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
 
3,通过日志查看当天ip连接数,过滤重复:
# tail -n 1000 access.log | grep "24/Nov/2016" | awk '{print $1}' | sort | uniq -c | sort -gr
 
当天连接数最高的ip在访问哪里:
# tail -n 10000 access.log | grep "24/Nov/2016" | grep "123.182.82.242" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
 
5,当天访问页面排前10的url:
# cat access.log | grep "24/Nov/2016" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
 
6,用tcpdump嗅探80端口的访问看看谁最高
# tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
接着从日志里查看该ip在干嘛:
# tail -n 5000 access.log | grep 58.213.65.242 | awk '{print $1"/t"$8}' | sort | uniq -c | sort -nr | less
 
7,查看某一时间段的ip连接数:
# tail -n 1000 access.log | grep "24/Nov/2016:" |cut -c 9-15| awk '{print $2}' | sort | uniq -c| sort -nr | wc -l
 
8,当前WEB服务器中联接次数最多的20条ip地址:
# netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
 
9,查看日志中访问次数最多的前10个IP
# cat access.log|grep "25/Nov/2016"|cut -d ' ' -f 1|sort|uniq -c|sort -nr|awk '{print $0 }'|head -n 10|less
 
# cat access.log | grep '28/Dec/2016' | awk '{print $1}' | sort | uniq -c | sort -nr|head
 
10,查看日志中出现100次以上的IP
# cat access.log|grep "25/Nov/2016"|cut -d ' ' -f 1|sort|uniq -c|awk '{if ($1 > 100) print $0}'|sort -nr|less
 
11,查看最近访问量最高的文件
# cat access.log|grep "25/Nov/2016"|awk '{print $7}'|sort|uniq -c|sort -nr|less
 
12,查看某天日志中访问超过100次的文件
# cat access.log|grep "24/Nov/2016"|cut -d ' ' -f 7|sort|uniq -c|awk '{if ($1 > 100) print $0}'|less
 
13,列出传输时间超过 30 秒的文件
# tail -n 500 access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
 
14,列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
# cat access_log |awk '($NF > 60 && $7~//.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
posted @ 2025-07-28 11:18  榆812  阅读(3)  评论(0)    收藏  举报