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

 

獨處並不是一種逃離行為,它更像是一種回歸,一種積極的情緒體驗

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM