Rhit:高效可視化 Nginx 日誌查看工具,每秒處理百萬行日誌數據
【導語】:一個格式化 Nginx 日誌,可快速閱讀、查看 Nginx 日誌的工具。
簡介
Rhit 可以從標準文件夾中讀取 Nginx 的日誌文件(gzipped 的壓縮文件也可以),並進行分析統計,在控制檯中以可視化的表格形式展示,並且不會產生任何多餘的臨時文件或數據。
可以按照日期、響應值、請求來源等進行過濾匹配,並進行分析,Rhit 具有很高的效率,每秒可以處理百萬行日誌數據。
以下是在一月份的日誌中查找狀態碼爲 1xx、2xx 的結果:
項目地址是:
https://github.com/Canop/rhit
安裝
- 直接下載使用編譯好的二進制文件,但是需要確保 shell 能夠找到 rhit 二進制文件,一個比較容易的處理方式就是把它放到 / usr/local/bin 目錄下,並且爲它添加可執行權限。
1chmod +x rhit
2// 下載地址
3https://dystroy.org/rhit/download
4
5
- 從 crates.io 安裝,依賴 Rust 環境,使用以下命令安裝:
1cargo install rhit
2
3
- 源碼安裝,依賴 Rust 環境,將 github 源碼 clone 之後,進入到 rhit 文件夾,運行以下命令:
1cargo install --path .
2
3
顯示字段
rhit 可以自動打開默認目錄下的 nginx 日誌文件,也可以在命令行參數中指定日誌路徑:
1rhit my/archived/logs
2
3
nginx 常見的日誌行是這樣的:
1178.133.125.122 - - [21/Jan/2021:05:49:52 +0000] "HEAD /broot/download/x86_64-pc-windows-gnu/broot.exe HTTP/1.1" 200 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
2
3
它由幾個字段組成:日期、遠程 IP 地址、路徑、發送的字節等。rhit 可以執行對錶格進行排序的字段列表,如果未指定,默認按照日期、狀態碼、來源和路徑來顯示,如果要制定多個字段,使用逗號進行分割,如 - f date,status;顯示所有字段,使用 - f all。
-
基於日期。使用 --field date,或者縮寫爲 - f date。默認情況下,條形圖的長度基於命中數量進行統計,也可以修改排序鍵以基於發送字節數進行統計。
-
基於 IP。默認情況下不顯示遠程 IP,可以使用 rhit -f ip 進行顯示。
-
基於請求方法。默認不顯示 HTTP 請求方法,可以使用 rhit -f method 進行顯示。
-
基於路徑。命令爲 rhit -f path
-
基於 Referer。命令爲 rhit -f ref
-
基於狀態碼。命令爲 rhit -f status
篩選
Rhit 提供了一些過濾器,用於篩選結果列表,展示自己想看到或者不想看到的一些數據。
-
按日期篩選。精確到天,日期格式是年 / 月 / 日,如篩選 2021/2/15 到 2021/2/20 的數據,也可以篩選大於某個時間、小於某個時間或不包含某個時間(使用'>','<','!'符號):
-
按遠程 IP 篩選。參數爲 - i,篩選特定的 IP,或者排除某個特定的 IP(使用'!'符號)。
-
按請求方法篩選。參數爲 - m,篩選特定方法,或者排除特定的方法。
-
按請求路徑篩選,參數爲 - p,可以精確匹配,也可以使用正則表達式(例如所有路徑均以 "download" 開頭且以 "exe":結尾,參數爲 -p 'download.*exe$'):
-
按 Referer 篩選。參數爲 - r,與按路徑篩選的語法一致:
-
按狀態碼篩選。參數爲 - s,篩選特定狀態碼,或者排除特定的狀態碼。
-
組合篩選。以上方式可以任意組合。
排序鍵
默認情況下,所有表都按照 hits 進行排序,這就是排序鍵,排序鍵的所有值都以粉紅色顯示,包括直方圖。如果對發送字節數更感興趣,可以將排序鍵修改爲 bytes,使用 - k b 進行更改:
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/iVCGToCZdw566qB9-B6Jhw