Awstats

如何分析 Awstats 的多個 gz 日誌文件?

  • July 24, 2020

我對 awstats 很陌生,並在我的 apache 網路伺服器上配置了 Awstats 來分析 nginx 訪問日誌(nginx 網路伺服器用於我的 django 應用程序),我可以從中獲取統計資訊,LogFile=/var/log/nginx/access.log但如何分析多個 gzip 格式的日誌。如access.log.1.gz…access.log.40.gz。我有很多日誌要分析。

您可能想要在這裡做的是分析所有這些日誌文件一次,然後從那時起只分析目前的日誌文件。

最簡單的做法是將所有這些文件解壓縮到一個文件中,然後讓 awstats 對其執行一次,然後將 awstats 指向您的 access.log 文件。

awstats 通常有一個名為 logresolvemerge.pl 的腳本,它可以讀取壓縮文件,並將它們適當地合併以供 awstats 進行分析。

要合併所有現有的,請執行

perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog

這可能需要一段時間。

然後,您可以讓 awstats 在此文件上執行一次(適當設置 LogFile)。

從那時起,您應該讓 awstats 在最近的日誌文件上執行 - 這就是您目前的配置正在執行的操作。

根據您執行 awstats 與輪換 nginx 日誌文件的頻率,您可能希望它同時讀取目前日誌文件和前一個日誌文件。(例如,如果您每天在 12 點輪換 nginx 日誌文件,但讓 awstats 每天在 1 點執行,那麼每當 awstats 執行時,日誌文件將只包含自上次輪換以來寫入的內容)。您可以在 LogFile 命令中使用 logresolvemerge.pl,如下所示:

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"

這告訴 awstats 以兩個日誌文件作為參數執行 logresolvemerge.pl 命令,並且 awstats 將讀取該腳本的輸出(這就是管道 | 所做的)

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