http {
 include mime.types;
 default_type  application/octet-stream;
 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 access_log  logs/access.log  main;
}



将log_format到access_log的注释打开即可,log_format可定义nginx的日志规格。

log_format默认规格参数表

名称 注解

$remote_addr 客户端/用户的IP地址

$time_local 访问时间

$request 请求方式 + 请求地址

$status 请求状态码 与HTTP状态码一致

$body_bytes_sent 请求的地址大小 以bytes格式计算

$http_referer 请求来源,从什么地方访问的

$http_user_agent 用户信息(浏览器信息)

$http_x_forwarded_for 转发IP地址

找到如下内容

error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;

将注解删除即可,你可以将不同的错误类型分开存储如

error_log logs/error.log notice;

notice既为错误类型,不写则是全部。

首先要查看nginx错误日志,我们可以用

cat /usr/local/nginx/logs/error.log




linux上日志挂截nginx查看 linux查看nginx日志命令_linux上日志挂截nginx查看


一查你就会发现有一大堆数据,看的眼睛都疼,那这时候呢,可以加一个管道命令,然后添加一个查询条件
cat /usr/local/nginx/logs/error.log | grep "$(date +"%Y/%m/%d")"
其中 | 就是一个管道命令,那这个命令里面我们要加的条件是什么呢?那就是查找当天的日志
于是:grep "$(date +"%Y/%m/%d")"
grep 就是查找的意思,然后date指的是当天时间,后面加上一个 +"%Y/%m/%d" 意思就是显示今天的时间有年/月/日的格式,$()这个作用就是,先将括号里面的内容完成,然后在生成一个新的命令行,比如今天日期是 2019/03/04 那执行完那一句的结果就是grep "2019/03/04"
这句执行以后,数据就显示是今天的日志了


linux上日志挂截nginx查看 linux查看nginx日志命令_linux 倒序查看 log日志_02


今天的错误日志就出现了,但是如果每天都要查看一次,那每次都要打一遍那就很累了,因此就有了shell脚本这个东西。


linux上日志挂截nginx查看 linux查看nginx日志命令_linux 倒序查看 log日志_03


新建一个文件,就叫做 nginx_error.sh
然后第一行输入 #!/bin/bash (执行bash)
第二行就是注释了
第三行就是获取当天ng的错误日志,并且重定向到root目录里面的nginx.txt
保存文件,然后设置权限,chmod +x nginx.sh (给该脚本设置一个执行权限)
然后 ./nginx.sh 接着就会多出一个nginx.txt。你直接cat nginx.txt。就可以查看当天的错误日志拉nginx访问量统计

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

查找访问频率最高的 URL 和次数:

cat access.log | awk -F ‘^A’ ‘{print $10}’ | sort | uniq -c

查找当前日志文件 500 错误的访问:

cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’

查找当前日志文件 500 错误的数量:

cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | wc -l

查找某一分钟内 500 错误访问的数量:

cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | grep ’09:00’ | wc-l

查找耗时超过 1s 的慢请求:

tail -f access.log | awk -F ‘^A’ ‘{if($6》1) print $0}’

假如只想查看某些位:

tail -f access.log | awk -F ‘^A’ ‘{if($6》1) print $3″|”$4}’

查找 502 错误最多的 URL:

cat access.log | awk -F ‘^A’ ‘{if($5==502) print $11}’ | sort | uniq -c

查找 200 空白页

cat access.log | awk -F ‘^A’ ‘{if($5==200 && $8 《 100) print $3″|”$4″|”$11″|”$6}’

查看实时日志数据流

tail -f access.log | cat -e

或者

tail -f access.log | tr ‘^A’ ‘|’

sed -n '/04/Dec/2015:07:30:53/,/04/Dec/2015:08:30:55/'p access.log | more 查看一段时间的日志

sed -n '/08/Dec/2015:15:48:01/,/08/Dec/2015:15:55:59/p' access.log > new.log

当前WEB服务器中联接次数最多的ip地址

#netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr

查看日志中访问次数最多的前10个IP

#cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less

查看日志中出现100次以上的IP

#cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less

查看最近访问量最高的文件

#cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less

查看日志中访问超过100次的页面

#cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less

统计某url,一天的访问次数

#cat access_log|grep '12/Aug/2009'|grep '/images/index/e1.gif'|wc|awk '{print $1}'

前五天的访问次数最多的网页

#cat access_log|awk '{print $7}'|uniq -c |sort -n -r|head -20

从日志里查看该ip在干嘛

#cat access_log | grep 218.66.36.119| awk '{print $1"t"$7}' | sort | uniq -c | sort -nr | less

列出传输时间超过 30 秒的文件

#cat access_log|awk '($NF > 30){print $7}' |sort -n|uniq -c|sort -nr|head -20

列出最最耗时的页面(超过60秒的)

#cat access_log |awk '($NF > 60 && $7~/.PHP/){print $7}' |sort -n|uniq -c|sort -nr|head -100

awk '{ print $1}':取数据的低1域(第1列)

sort:对IP部分进行排序。

uniq -c:打印每一重复行出现的次数。(并去掉重复行)

sort -nr -k1:按照重复行出现的次序倒序排列,-k1以第一列为标准排序。

head -n 10:取排在前5位的IP 。

linux 如何显示一个文件的某几行(中间几行)

【一】从第3000行开始,显示1000行。即显示3000~3999行

cat filename | tail -n +3000 | head -n 1000

【二】显示1000行到3000行

cat filename| head -n 3000 | tail -n +1000

*注意两种方法的顺序

分解:

tail -n 1000:显示最后1000行

tail -n +1000:从1000行开始显示,显示1000行以后的

head -n 1000:显示前面1000行