ADJ網路實驗室
打印

[介紹] Nginx log 分析使用 GoAccess - 即時監控伺服器狀態

Nginx log 分析使用 GoAccess - 即時監控伺服器狀態

GoAccess 是一個開放原始碼的網頁伺服器記錄檔分析工具,可以產生網頁版或文字版的動態統計報表,讓系統管理者可以查看即時的系統狀態,其涵蓋的資訊非常詳細,而且產生報表的方式相當簡潔,只要一行指令就可以馬上產生報表,對於 Linux 系統與指令比較熟悉的人而言,是一個非常方便的工具。

(1)安裝 GoAccess

我這裡以 Ubuntu Linux 的環境來示範如何安裝 GoAccess。最簡單的安裝方式就是直接使用 apt 從 Ubuntu Linux 官方的套件庫安裝:

不過通常官方所收錄的套件都不是最新的,若要安裝最新版的 GoAccess,可以從 GoAccess 的 Debian/Ubuntu 套件庫來下載安裝,首先設定 GoAccess 官方的套件庫:

引用:

# echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
# wget -O - http://deb.goaccess.io/gnugpg.key | sudo apt-key add -


更新套件列表,並安裝最新的 GoAccess 套件:

# apt-get update
# apt-get install goaccess

如果您會需要訪客來源國家的資訊,就要再安裝 GeoIP 資料庫:

# apt-get install geoip-database

這樣 GoAccess 就安裝完成了。

GoAccess 對於其他的 Linux 與 Mac OS X 等系統的支援性也相當高,關於各種其他系統的安裝方式,請參考 GoAccess 的安裝說明。

(2)使用 GoAccess 分析 Nginx 記錄檔

因為不同的網頁伺服器會有不同的記錄檔格式,在使用 GoAccess 之前,我們要將 GoAccess 的解析設定調整成適合自己伺服器的格式。
設定 GoAccess 分析 Nginx 記錄檔

開啟 /etc/goaccess.conf 這個 GoAccess 的設定檔,根據自己的網頁伺服器設定檔格式進行調整,如果您是使用 Apache 或 Nginx 預設的設定(也就是沒有特別去改記錄檔的格式的話),只要把 GoAccess 設定檔中對應的設定註解拿掉即可,這裡我以 Nginx 預設的記錄檔格式設定來示範。

引用:

首先調整時間格式:

# The following time format works with any of the
# Apache/NGINX's log formats below.
time-format %H:%M:%S

接著是日期格式:

# The following date format works with any of the
# Apache/NGINX's log formats below.
date-format %d/%b/%Y

記錄內容的格式:

# NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"


設定好記錄檔的格式之後,就可以開始使用 GoAccess 分析資料了。
GoAccess 文字報表

GoAccess 最直接的方式就是使用 -f 參數指定要分析的記錄檔:

# goaccess -f /var/log/nginx/access.log

執行之後,GoAccess 會立即分析指定的記錄檔,隨即產生這樣的文字報表。



這個報表的內容很詳細,包含訪客人數、請求網址、靜態檔案、404 錯誤網址、來源 IP 位址、訪客作業系統與瀏覽器版本、瀏覽時間、引介網站(referring sites)、訪客來源國家等各種統計資料,使用者可以用上下鍵捲動來查看。

另外它的內容是會動態更新的(類似 top 指令的畫面),所以管理者可以使用 SSH 這類的連線方式連上主機之後,執行這樣的指令後放著監看即時的系統狀態,而不要看的時候就直接關閉,完全不需要為了監控伺服器而啟動任何背景的系統服務,不會造成系統不必要的負擔。



如果要看比較長期性的統計數據,可以將 /var/log/nginx/ 下面的 access.log.* 檔整理出來,一次全部丟給 GoAccess 來分析:

# cat access.log.* | goaccess

這樣就可以產生好幾天以上的統計資料。

GoAccess 網頁報表

如果您感覺文字模式的報表不好看,GoAccess 也可以產生漂亮的網頁報表,只要把 goaccess 指令的輸出導向檔案,就會輸出 html 的報表:

# cat access.log.* | goaccess > output.html

如果只有輸出報表還不能滿足...那麼你可以再進一步使用 線上即時報表:
# goaccess -f /var/log/nginx/site1-access.log -a -o /var/www/goaccess.mydomain.com/site.html.html --real-time-html --ws-url=goaccess.mydomain.com

這邊有Live Demo 的資料可以參考:
https://rt.goaccess.io/

參考資料:
https://www.tecmint.com/goaccess-a-real-time-apache-and-nginx-web-server-log-analyzer/
https://blog.gtwang.org/linux/analysing-nginx-logs-using-goaccess/





TOP

ARTERY.cn