Nginx日志常用分析命令汇总

一、概念

并发连接数

客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器链接的总TCP数量,就是并发连接数。

请求数

请求数指的是客户端在建立完连接后,向http服务发出GET/POST/HEAD数据包。

拓展:服务器返回了请求结果后有两种情况:

    • http数据包头包含Close字样,关闭本次TCP连接;
    • http数据包头包含Keep-Alive字样,本次连接不关闭,可继续通过该连接继续向http服务发 送请求,用于减少TCP并发连接数。

PV(page view)

访问量,即页面浏览量或者点击量,用户每次对网站的访问均被记录1次。用户对同一页面的多次访问,访问量值累计

UV(unique visitor)

独立访客量。将每个独立设备(以cookie为依据)视为一位访客,一天之内(00:00-24:00)的访客数量。一天之内相同cookie的访问只被计算1次。

独立IP

00:00-24:00内相同IP地址只被计算一次

二、Nginx配置

版本

nginx version: nginx/1.10.2

日志配置项

access_log    /var/log/access.log   access;

日志格式


log_format access  ‘$remote_addr - $remote_user [$time_local] "$request" $request_body  ‘

‘$upstream_addr $upstream_response_time $request_time ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" $http_x_forwarded_for ‘ ;

三、常用日志分析命令

1、总请求数

wc -l access.log |awk ‘{print $1}‘

2、独立IP数

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

3、每秒客户端请求数 TOP5

awk  -F‘[ []‘ ‘{print $5}‘ access.log|sort|uniq -c|sort -rn|head -5

4、访问最频繁IP Top5

awk ‘{print $1}‘ access.log|sort |uniq -c | sort -rn |head -5

5、访问最频繁的URL TOP5

awk ‘{print $7}‘ access.log|sort |uniq -c | sort -rn |head -5

6、响应大于10秒的URL TOP5

awk ‘{if ($12 > 10){print $7}}‘ access.log|sort|uniq -c|sort -rn |head -5

7、HTTP状态码(非200)统计 Top5

awk ‘{if ($13 != 200){print $13}}‘ access.log|sort|uniq -c|sort -rn|head -5

8、分析请求数大于50000的源IP的行为

awk ‘{print $1}‘ access.log|sort |uniq -c |sort -rn|awk ‘{if ($1 > 50000){print $2}}‘ > tmp.txt
for i in $(cat tmp.txt)
do
   echo $i  >> analysis.txt
   echo "访问行为统计" >> analysis.txt
   grep $i  access.log|awk ‘{print $6}‘ |sort |uniq -c | sort -rn |head -5 >> analysis.txt
   echo "访问接口统计" >> analysis.txt
   grep $i  access.log|awk ‘{print $7}‘ |sort |uniq -c | sort -rn |head -5 >> analysis.txt
   echo -e "\n"  >> /root/analysis/$Ydate.txt
done

注:如果源IP来自代理服务器,应将第一条命令过滤地址改为$http_x_forwarded_for地址

awk ‘{print $NF}‘ access.log|sort |uniq -c |sort -rn|awk ‘{if ($1 > 50000){print $2}}‘ > tmp.txt

四、延伸

Nginx日志按日切割后可使用上述命令得出每日网站流量分析概况,然后可以写一个Python脚本读取后发送。也可以将数据导入MySQL然后使用Python绘制曲线。当然使用日志分析系统,如ELK,效果更佳。

时间: 2024-10-12 15:06:15

Nginx日志常用分析命令汇总的相关文章

分析nginx日志常用的命令总结

1. 利用grep ,wc命令统计某个请求或字符串出现的次数 比如统计GET /app/kevinContent接口在某天的调用次数,则可以使用如下命令: cat /usr/local/nginx/logs/access.log | grep 'GET /app/kevinContent' | wc -l 其中cat用来读取日志内容,grep进行匹配的文本搜索,wc则进行最终的统计. 当然只用grep也能实现上述功能: grep 'GET /app/kevinContent'  /usr/loc

JVM常用虚拟机命令汇总

title: JVM常用虚拟机命令汇总 comments: false date: 2019-07-22 11:45:33 description: 总结一下常用的JVM虚拟机启动命令. categories: GC 概述 本文主要说明一些 JVM 启动命令的作用以及使用方法. 在 Java 程序启动时,我们可以通过加入参数来让虚拟机打印一些虚拟机参数. -XX:+PrintFlagsInitial:打印虚拟机的初始化参数(也就是XXX的默认值) -XX:+PrintFlagsFinal:打印虚

常用Git命令汇总

常用Git命令汇总 跟着R哥来到了新公司(一个从硬件向互联网转型中的公司),新公司以前的代码基本是使用SVN做版本控制,甚至有些代码没有做版本控制,所以R哥叫HG做了一次Git分享,准备把公司所有的代码用Git作版本控制.平时自己虽然天天使用Git,但是总感觉知识有些零散,于是汇总了一些常用的Git命令. 常用配置 --system #系统级别 --global #用户全局 --local #单独一个项目 git config --global user.name "xxxx" #用户

Vertica数据库常用管理命令汇总

1.查询数据库是否有等待 select * from resource_queues where node_name=(select node_name from nodes order by node_name limit 1) order by queue_entry_timestamp desc; 2.查当前数据库执行的sql(包含在队列里等待的) select substr(current_statement, 1, 200), count(1) from sessions where

Awk,Cat,Head分析Nginx日志常用命令

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 |

【运维小分享】Apache日志分析命令汇总

很多像我这样刚入门的小菜鸟,不知道日常怎么对自己的网站的日志进行分析,得出谁访问过我网站,访问什么,响应效果如何等等,在这里我对相关基础分析命令作个总结,大家可以参考一下&给修改意见. 在讲分析命令之前,首先要明确日志格式,每个人的格式不一定一样,如果与我的格式不一样则分析命令的列数号要作对应调整 141.10.225.94 - - [09/Dec/2016:15:42:45 +0800] "GET /wp-content/uploads/2016/12/56.jpg HTTP/1.1&

Windows常用CMD命令汇总

有时在windows下经常找不到相应的管理工具位置,尤其在win10中,记得有一次win10更新了下,竟然找不到控制面板了,尴尬.现在再也不用找来找去了.持续更新ing cpl:全称:Control PaneL extension,控制面板扩展程序 msc: 全称:MicoSoft management Console,微软管理控制台 exe:全称:executable,可执行程序 vbs:全称,Visual Basic script,微软发布的一种可执行程序 常用命令汇总 设置管理  comm

linux必备常用重要命令汇总

linux的man帮助文件很强大,因此很多人都认为没有必要记住linux命令.我觉得这是一个误区,基本的常用命令是一定要记住的,就像你相亲一定要能叫出对方的名字一样重要.记住他们有两个好处:第一提高自己的效率,第二思路清晰.那么我到底需要记住那些linux的命令及它的常用选项呢?虽然这是一个仁者见仁问题.我个人认为计算机就是为了完成任务,那么linux中什么任务最常操作,完成它的命令就越是常用的了.下面按照这个道理总结一下红帽系列linux常用命令:1. 文件目录管理命令25:touch.mkd

linux常用系统配置命令汇总

系统配置及查看信息相关命令 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv # 列出所有USB设备# lsmod # 列出加载的内核模块# env # 查看环境变量 资源# free -m # 查看内存使用量和交换区使用量# df -h # 查看各分区使用情况