在 Nginx access.log 中获取每个 IP 每个请求的请求计数

Ahm*_*mal 2 unix nginx devops

我有运行 nginx Debian GNU/Linux 9的 unix 服务器

我试图在 Nginx access.log 文件中获取每个 IP 每个请求的请求计数以进行分析,所以我有 2 个问题:

  1. 是否有一个unix命令可以从日志文件(整个文件)中按每个IP每个请求获取此信息?
  2. 还可以按日期过滤吗?我的意思是获取某一天每个请求每个 IP 的请求计数。所以希望我能得到这样的东西
IP        count
127.0.0.1 4
127.0.0.2 5
127.0.0.3 6
Run Code Online (Sandbox Code Playgroud)

我发现了这个,但它只计算 ips

sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)

小智 5

是的,您可以在第一个命令中使用 grep :

grep '12/Jan/2021' access.log | awk '{print $1}' | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)

对于某些日期,使用扩展正则表达式:

grep -E '11/Jan/2021|12/Jan/2021' access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
Run Code Online (Sandbox Code Playgroud)