Log-Files

是否有免費的解決方案來計算 apache 文件中上下文根的數量?

  • February 21, 2013

我有一個 apache 日誌文件。我需要報告有多少行(請求)來自特定的上下文根。apache 日誌已經以斜杠開頭,上下文根是第二個斜杠。

範例 Apache 日誌:

11.222.33.44 - - [14/Feb/2013:00:27:33 -0600] "GET /lifecontent/monitor?test=siteseer&format=siteseer HTTP/1.1" 200 275 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)" "SSL=on"
111.22.333.44 - - [14/Feb/2013:00:29:29 -0600] "GET /lc/Brokerage%20Manager/IDG%20Licensing%20and%20Appointment%20Process/IDG%20Franchise%20Reference%20Manual HTTP/1.1" 302 - "-" "(Windows NT)" "SSL=-"

兩個上下文根是**“/lifecontent/”“/lc”**

不確定哪種工具最好?我對 GUI 或批處理解決方案感到滿意。

我主要是想弄清楚每個上下文根在 apache 文件中使用的百分比。(理想情況下,它可以一次搜尋多個文件,但不是必需的。)

你可以用一個簡單的 shell 腳本來做到這一點:

cut -d/ -f4 access.log | sort | uniq -c | sort -g

cut命令提取第 5 個 / 分隔的欄位(即“上下文根”),sort | uniq -c然後計算每個欄位的出現次數,並按出現次數sort -g對其進行排序。

在我的網路伺服器上執行它會給出:

  5477 misc
 11130 bzr
 32181 raspbian
 35912 files
 43020 sites

我接受了 mgorven 解決方案,因為它讓我朝著正確的方向尋求最終的工作解決方案。在使用他的解決方案之後,有時會有查詢字元串值,有時上下文根沒有結束斜杠。所以“/lc/”和“/lc”和“/lc?x=y”被算作“lc”。所以我最終使用了這個解決方案:

cut -d" " -f7 access.log | cut -d? -f1 | cut -d/ -f2 | sort | uniq -c | sort -g

這將顯示被訪問的單個文件,如果僅訪問“/”,則會顯示一個空行。

我也使用 UnxUtils.zip 在 Windows 上執行此操作:http: //sourceforge.net/projects/unxutils。我需要提取的只是剪切、排序、uniq。

謝謝你mgorven!

引用自:https://serverfault.com/questions/479003