這裡介紹如何使用 GoAccess 來即時分析 Nginx 的 log 記錄檔,產生各種網頁伺服器的統計資訊報表,讓管理者輕鬆掌握系統狀況。
GoAccess 是一個開放原始碼的網頁伺服器記錄檔分析工具,可以產生網頁版或文字版的動態統計報表,讓系統管理者可以查看即時的系統狀態,其涵蓋的資訊非常詳細,而且產生報表的方式相當簡潔,只要一行指令就可以馬上產生報表,對於 Linux 系統與指令比較熟悉的人而言,是一個非常方便的工具。
我這裡以 Ubuntu Linux 的環境來示範如何安裝 GoAccess。最簡單的安裝方式就是直接使用 apt 從 Ubuntu Linux 官方的套件庫安裝:
sudo apt-get install goaccess
不過通常官方所收錄的套件都不是最新的,若要安裝最新版的 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 套件:
sudo apt-get update sudo apt-get install goaccess
如果您會需要訪客來源國家的資訊,就要再安裝 GeoIP 資料庫:
sudo apt-get install geoip-database
這樣 GoAccess 就安裝完成了。
GoAccess 對於其他的 Linux 與 Mac OS X 等系統的支援性也相當高,關於各種其他系統的安裝方式,請參考 GoAccess 的安裝說明。
因為不同的網頁伺服器會有不同的記錄檔格式,在使用 GoAccess 之前,我們要將 GoAccess 的解析設定調整成適合自己伺服器的格式。
開啟 /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 最直接的方式就是使用 -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
這樣就可以產生好幾天以上的統計資料。
也可以配合 zcat
一次將所有的記錄檔全部交給 GoAccess 分析:
zcat -f /var/log/nginx/access.log* | goaccess
如果您感覺文字模式的報表不好看,GoAccess 也可以產生漂亮的網頁報表,只要把 goaccess
指令的輸出導向檔案,就會輸出 html 的報表:
cat access.log.* | goaccess > output.html
GoAccess 還有提供很多功能參數可以使用,以下是一些常用參數的使用教學與範例指令。
若要排除某些 IP 位址(例如將自己電腦的 IP 位址排除),可以使用 -e
參數指定要排除的 IP 位址範圍:
goaccess -f /var/log/nginx/access.log -e 192.168.0.1-192.168.0.10
這樣就會將 192.168.0.1-192.168.0.10
這 10 個 IP 位址的記錄排除。
GoAccess 文字版的報表可以用 --color-scheme
參數選擇配色,預設是灰色(1
),可以改成綠色(2
):
goaccess -f /var/log/nginx/access.log --color-scheme=2
入要關閉所有的顏色顯示功能,可以加上 --no-color
參數:
goaccess -f /var/log/nginx/access.log --no-color
參考資料:Tecmint