nginx日誌分析工具goaccess

孙龙-程序员發表於2024-09-01

nginx日誌分析工具goaccess

官網:https://www.goaccess.cc/

使用手冊:https://www.goaccess.cc/?mod=man

wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar xf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

報錯:

文件地址:https://www.goaccess.cc/?mod=man

自定義 日誌/日期 格式

GoAccess 可以解析虛擬的任意 Web 日誌格式。

預定義的選項包括:通用日誌格式,聯合日誌格式,包含虛擬主機,W3C 格式以及亞馬遜 CloudFront(分散式下載)。

GoAccess 允許任意的自定義格式字串。

有兩種方法配置日誌格式。最簡單的方式是執行 GoAccess 時使用 -c 顯示一個配置視窗。但是這種方式不是永久有效的,因此你需要在配置檔案中設定格式。

配置檔案位於:%sysconfdir%/goaccess.conf 或者 ~/.goaccessrc

注意: %sysconfdir% 可能是 /etc/, /usr/etc/ 或者 /usr/local/etc/

time-format 引數 time-format 後跟隨一個空格符,指定日誌的時間格式,包含普通字元與特殊格式說明符的任意組合。他們都由百分號 (%)開始。參考 `man strftime`。 %T 或者 %H:%M:%S.

注意: 如果給定的時間戳以微秒計算,則必須在 time-format 中使用引數 %f

date-format 引數 date-format 後跟隨一個空格符,指定日誌的日期格式,包含普通字元與特殊格式說明符的任意組合。他們都由百分號 (%)開始。參考 `man strftime`。

注意: 如果給定的時間戳以微秒計算,則必須在 time-format 中使用引數 %f

log-format 引數 log-format 後跟隨一個空格符或者製表分隔符(\t),用於指定日誌字串格式。

特殊格式說明符

  • %x 匹配 time-format 和 date-format 變數的日期和時間欄位。用於使用時間戳來代替日期和時間兩個獨立變數的場景。
  • %t 匹配 time-format 變數的時間欄位。
  • %d 匹配 date-format 變數的日期欄位。
  • %v 根據 canonical 名稱設定的伺服器名稱(服務區或者虛擬主機)。
  • %e 請求文件時由 HTTP 驗證決定的使用者 ID。
  • %h 主機(客戶端IP地址,IPv4 或者 IPv6)。
  • %r 客戶端請求的行數。這些請求使用分隔符(單引號,雙引號)引用的部分可以被解析。否則,需要使用由特殊格式說明符(例如:%m, %U, %q%H)組合格式去解析獨立的欄位。%m 請求的方法。
    • 注意: 既可以使用 %r 獲取完整的請求,也可以使用 %m, %U, %q and %H 去組合你的請求,但是不能同時使用。
  • %U 請求的 URL。%q 查詢字串。
    • 注意: 如果查詢字串在 %U中,則無需使用 %q。但是,如果 URL 路徑中沒有包含任何查詢字串,則你可以使用 %q 查詢字串將附加在請求後面。
  • %H 請求協議。
  • %s 伺服器回傳客戶端的狀態碼。
  • %b 回傳客戶端的物件的大小。
  • %R HTTP 請求的 "Referer" 值。
  • %u HTTP 請求的 "UserAgent" 值。
  • %D 處理請求的時間消耗,使用微秒計算。
  • %T 處理請求的時間消耗,使用帶秒和毫秒計算。
  • %L 處理請求的時間消耗,使用十進位制數表示的毫秒計算。
  • %^ 忽略此欄位。
  • %~ 繼續解析日誌字串直到找到一個非空字元(!isspace)。
  • ~h 在 X-Forwarded-For (XFF) 欄位中的主機(客戶端 IP 地址,IPv4 或者 IPv6)。
注意
針對 XFF, GoAccess 使用了一個特殊符號,即由一個波浪號+主機說明符構成,然後緊跟由大括號封裝起來的 XFF 限定欄位(例:~h{,"})。
舉例如下, ~h{," } 用於解析 "11.25.11.53, 17.68.33.17" 欄位由一對雙引號,一個逗號和一個空格限定。
注意
為了得到平均,累計,最大處理時間,將需要開始在 Web 伺服器中記錄響應次數。在 Nginx 中可以新增 $request_time 到日誌格式中,或者 %D 在 Apache 中。

相關文章