004 Nginx日誌挖掘accessLog

_Tsun發表於2020-12-24

日誌模版

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

實際記錄的日誌

192.168.56.1 - - [23/Dec/2020:23:13:04 +0800] "GET /app/img/ys.jpg HTTP/1.1" 403 555 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400"

192.168.56.1 - - [23/Dec/2020:23:14:54 +0800] "GET /app/img/aa/a.png HTTP/1.1" 200 26578 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400"

日誌解析

$remote_addr  192.168.56.1  對應客戶端IP地址
$remote_user - 對應遠端使用者,沒有遠端使用者,所以用-充填
[$time_local]  [23/Dec/2020:23:13:04 +0800] 訪問時間
"$request"   "GET /app/img/ys.jpg HTTP/1.1"  訪問HTTP資訊
$status 403 訪問的狀態碼
$body_bytes_sent 555 響應的body大小
$http_referer 站點來源 # 可以用於防盜鏈
$http_user_agent 客戶端資訊
$http_x_forwarded_for 使用者真實IP(代理時候),-/空

accessLog 分析常用命令

樣例檔案 -> access_temp.log

# 檢視訪問最頻繁的前10個IP

# 列印第一個 | 排序 |  去重統計 | 倒敘排序 |  取前10條
awk '{print $1}' access_temp.log | sort -n | uniq -c | sort -rn | head -n 10

# 統計訪問最多的URL 前10
# 這裡面有token,正常需要把?後面切走,這裡先不管
cat access_temp.log | awk  '{print $7}'  | sort  | uniq -c | sort -rn | head -n 10

介面效能

#  日誌 新增變數
$request_time  使用者請求響應總耗時
$upstream_response_time 從nginx到服務請求響應時間(排除掉nginx和使用者的時間)


cat xxx.log | awk '($NF >2){print $7}' | sort -n | uniq -c | sort -nr | head -5
$NF 表示最後一列

相關文章