nginx日志分析及其统计PV、UV、IP
一、nginx日志结构
nginx中access.log 的日志结构: $remote_addr 客户端地址 211.28.65.253 $remote_user 客户端用户名称 -- $time_local 访问时间和时区 18/Jul/2012:17:00:01 +0800 $request 请求的URI和HTTP协议 "GET /article-10000.html HTTP/1.1" $http_host 请求地址,即浏览器中你输入的地址(IP或域名) www.it300.com 192.168.100.100 $status HTTP请求状态 200 $upstream_status upstream状态 200 $body_bytes_sent 发送给客户端文件内容大小 1547 $http_referer url跳转来源 https://www.baidu.com/ $http_user_agent 用户终端浏览器等信息 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C; $ssl_protocol SSL协议版本 TLSv1 $ssl_cipher 交换数据中的算法 RC4-SHA $upstream_addr 后台upstream的地址,即真正提供服务的主机地址 10.10.10.100:80 $request_time 整个请求的总时间 0.205 $upstream_response_time 请求过程中,upstream响应时间 0.002
二、PV、UV、IP
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。 IP(独立IP):即Internet Protocol,指独立IP数。00:00-24:00内相同IP地址之被计算一次。
nginx统计网站访问量:
根据访问ip统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 根据访问url统计PV量: awk '{print $7}' access.log | wc -l 查询访问最频繁的URL awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more 查询访问最频繁的IP awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more 查看并发连接数 netstat -nat|grep ESTABLISHED|wc -l 查询传输时间超过3秒的页面: cat access.log |awk '($NF > 3){print $7}'|sort -n|uniq -c|sort -nr|head -20 统计某路由平均响应时间($upstream_response_time参数) grep "/" access.log | awk '{print $NF}' | grep -P '\d{3}?$' | awk '{sum += $0;}END {if(sum==0)print 0;else print sum/NR}' 获取每分钟的请求数量,输出到文件 cat access.log | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' > access.txt
根据时间节点快速查询、截取日志:
日志截取,从总日志文件中截取昨天一整天的数据出来,并覆盖到新文件中: cat access.log | awk '$4 >="[14/Mar/2019:00:00:00" && $4 <="[14/Mar/2019:23:59:59"' > 20190314-access.log 将某一时间段的nginx访问日志输出到文件中 cat access.log | egrep "2020-11-04" > test.log #打印一天的日志 cat access.log | egrep "04/Nov/2020:10" > test.log #打印一小时的日志 sed -n '/04\/Nov\/2020:10/,/04\/Nov\/2020:12/p' access.log > test.log #打印任意时间段的日志
使用的命令:
sort 排序 sort 默认是升序,sort -r 降序 sort -u 去除重复行 uniq 去重 -i 忽略大小写字符 -c 进行计数 -u 只显示唯一的行 cut 从文件文件中截取 -d 后接分割字符 -f 依据-d的分隔符将信息分割成数段,-f 取出第几段 -c 以字符的单位取出固定字符区间 wc 统计文件里面有多少单词,多少行,多少字符 -l :仅列出行; -w :仅列出多少字(英文单字); -m :多少字符;
原文链接:https://www.cnblogs.com/cfzy/p/14750131.html
独处并不是一种逃离行为,它更像是一种回归,一种积极的情绪体验
作者:等风来~~
本博客所有文章仅用于学习、研究和交流目的,欢迎转载。
如果觉得文章写得不错,或者帮助到您了,请点个赞。
如果文章有写的不足的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。