解鎖Nginx日誌的寶藏:GoAccess——你的實時、互動式Web日誌分析神器!

雪之梦技术驿站發表於2024-07-23

在當今數字化的時代,網站的流量和使用者行為資料就像是一座蘊藏著無盡秘密的寶藏。而如何有效地挖掘和分析這些資料,成為了許多網站管理者和開發者頭疼的問題。GoAccess,一款開源的實時Web日誌分析工具,或許能為我們提供一扇窺探這些秘密的視窗。

GoAccess:你的流量分析好幫手

GoAccess是一款輕量級的日誌分析工具,它透過簡潔的命令列操作和直觀的視覺化介面,幫助使用者深入理解網站流量和使用者行為。它不僅可以展示基本的統計資料,如獨立訪客、請求的檔案、404錯誤等,還能提供更深層次的分析,例如作業系統、瀏覽器、搜尋引擎和HTTP響應程式碼等。

從零開始:安裝與配置GoAccess

GoAccess支援多種下載安裝方式,推薦根據實際情況選擇合適的方式自行安裝.

如需獲取軟體壓縮包,可私信評論回覆關鍵詞goaccess自動傳送.

下載安裝

  • 從原始碼(tar.gz)下載並構建

  • Linux發行版的包管理器

  • Github開發版本

  • Docker映象容器

配置使用

一旦安裝完畢後就要開始使用GoAccess,前提是先確認訪問日誌的格式,然後配置GoAccess以滿足自定義需求.

如果您正在使用 Apache 或者 Nginx 的標準日誌格式,配置 GoAccess 將十分簡單。

# 常見的log-format格式,更詳細自定義日誌配置請考參考文件!

# COMBINED     | 聯合日誌格式
# VCOMBINED    | 支援虛擬主機的聯合日誌格式
# COMMON       | 通用日誌格式
# VCOMMON      | 支援虛擬主機的通用日誌格式
# W3C          | W3C 擴充套件日誌格式
# SQUID        | Native Squid 日誌格式
# CLOUDFRONT   | 亞馬遜 CloudFront Web 分散式系統
# CLOUDSTORAGE | 谷歌雲端儲存
# AWSELB       | 亞馬遜彈性負載均衡
# AWSS3        | 亞馬遜簡單儲存服務 (S3)

# goaccess命令啟動
goaccess access.log --log-format=COMBINED

# docker方式啟動
docker run --restart=always -d -p 7890:7890 \
  -v "/srv/goaccess/data:/srv/data"         \
  -v "/srv/goaccess/html:/srv/report"       \
  -v "/var/log/apache2:/srv/logs"           \
  --name=goaccess allinurl/goaccess

當然,對於常見的web日誌格式,GoAccess已經預設好了相應地日誌配置,對此我們可以直接開箱即用.

實戰演練:分析Nginx日誌

基本操作

要開始使用GoAccess分析Nginx日誌,首先需要指定日誌檔案的路徑。

透過命令列輸入find / -name access.log找到nginx日誌檔案,常見位置可能為/var/log/nginx/access.log.
然後利用同樣的方法可以獲取GoAccess配置檔案位置,最後再透過命令列輸入goaccess -f /var/log/nginx/access.log,GoAccess將讀取並分析指定的日誌檔案。

此外,還可以指定配置檔案路徑,以使用自定義的日誌格式和顯示選項。

# nginx日誌檔案
find / -name access.log
# /var/log/nginx/access.log

# goaccess配置檔案
find / -name goaccess.conf
# /etc/goaccess/goaccess.conf

# 終端檢視Nginx日誌
goaccess /var/log/nginx/access.log --log-format=COMBINED 

生成報告

GoAccess不僅能夠實時顯示分析結果,還能將結果儲存為HTML格式的報告。透過命令goaccess -f /var/log/nginx/access.log -o /code/log/report.html,可以將分析結果輸出到指定的HTML檔案中。這樣,使用者可以透過Web瀏覽器檢視更加美觀和易於閱讀的報告。

# 靜態html報告
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED

# 實時html報告: websocket預設繫結 7890 埠 
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --daemonize

實時html報告需要配置nginxwebsocket支援,動態實時獲取日誌資料 開啟 7890 埠,以下示例僅供參考:

# 新增goaccess websocket 服務
location /wss {
    proxy_redirect off;
    proxy_pass http://127.0.0.1:7890;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
}

檢視頁面設定小圓點是否為綠色,是表示websocket連線成功(title提示Connected to wss://web.example.com/wss:7890)

也可以透過瀏覽器-檢視-網路看請求結果(狀態程式碼: 101 Switching Protocols)

當然,如果未配置開啟WebSocket支援,可以使用Cron任務指令碼定時生成靜態報告,模擬實時報告的效果!

深入分析:挖掘資料背後的故事

GoAccess分析日誌輸出預設有十幾項內容,按向下的箭頭滾動頁面檢視。

獨立訪客與請求檔案

透過GoAccess,我們可以清晰地看到網站的獨立訪客數量和請求的檔案型別。這些資料不僅幫助我們瞭解使用者訪問的頻率,還能揭示使用者對特定內容的偏好。例如,如果發現某類圖片檔案的請求量異常高,可能意味著使用者對這些內容特別感興趣。

404錯誤與檔案未找到

404錯誤是網站運營中常見的問題,它不僅影響使用者體驗,還可能影響搜尋引擎最佳化。透過GoAccess的分析,我們可以找出導致404錯誤的檔案路徑,進而最佳化網站結構,減少這類錯誤的發生。

作業系統與瀏覽器

使用者使用的作業系統和瀏覽器也是重要的分析指標。透過這些資料,我們可以瞭解使用者的基本屬性,並據此最佳化網站的相容性和使用者體驗。比如,如果發現大多數使用者使用的是Chrome瀏覽器,那麼網站在設計時就應該優先考慮Chrome的相容性。

結語

在這個資料驅動的時代,GoAccess不僅是一款工具,更是一座橋樑,連線著使用者和網站運營者。透過它,我們可以更好地理解使用者的行為,最佳化網站的設計,提升使用者體驗。讓我們擁抱資料,用智慧點亮未來。

相關文章