nginx log 格式
log_format access '$http_x_forwarded_for $remote_addr $remote_user [$time_local]' | |
'"http://$host" "$request" $status $body_bytes_sent "$http_referer"' | |
'"$http_user_agent" "$HTTP_X_UP_CALLING_LINE_ID" "$request_time"'; |
1. 获得访问前 10 位的 ip 地址
cat access.log|gawk '{print $1}' |sort|uniq -c|sort -nr|head -10 |
2. 访问次数最多的文件或页面
cat access.log|gawk '{print $11}'|sort|uniq -c|sort -nr |
3. 通过子域名访问次数,依据 referer 来计算(稍有不准)
cat access.log|awk '{print $11}'|sed -e ' s/http:\/\///' -e ' s/\/.*//'|sort|uniq -c|sort -rn|head -20 |
4. 列出传输大小最大的几个文件
cat access.log|awk '($7~/\.php/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head -100 |
5. 列出输出大于 200000byte(约 200kb)的页面以及对应页面发生次数
cat access.log|awk '($10 > 200000 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -20 |
6. 如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log|awk '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100 |
7. 列出最最耗时的页面(超过 60 秒的)的以及对应页面发生次数
cat access.log|awk '($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100 |
8. 列出传输时间超过 30 秒的文件
cat access.log|awk '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100 |
9. 列出当前服务器每一进程运行的数量 (倒序排)
ps -ef|awk -F ' ' '{print $8 " " $9}' |sort|uniq -c|sort -nr|head -20 |