Linux系統之GoAccess實時Web日志分析工具的基本使用
- 一、GoAccess介紹
- 1.1 GoAccess簡介
- 1.2 GoAccess功能
- 1.3 Web日志格式
- 二、本地環境介紹
- 2.1 本地環境規劃
- 2.2 本次實踐介紹
- 三、檢查本地環境
- 3.1 檢查本地操作系統版本
- 3.2 檢查系統內核版本
- 3.3 檢查系統鏡像源
- 3.4 更新軟件列表
- 3.5 查詢軟件
- 四、安裝GoAccess
- 4.1 編譯安裝
- 4.2 從發行版本安裝
- 4.3 查看安裝版本
- 五、監控日志信息
- 5.1 檢查本地web服務器
- 5.2 監視Apache日志
- 5.3 測試訪問web服務
- 六、通過web儀表板查看日志
- 6.1 本機操作
- 6.2 瀏覽器打開日志文件
- 6.3 配置虛擬主機訪問
- 七、設置中文
- 7.1 系統安裝中文包
- 7.2 設置簡體中文
- 7.3 測試訪問
- 八、總結
一、GoAccess介紹
1.1 GoAccess簡介
GoAccess 是一個開源實時 Web 日志分析器和交互式查看器,可在Linux系統上的 終端中或通過瀏覽器運行。它為需要動態可視化服務器報告的系統管理員提供快速且有價值的 HTTP 統計信息。
1.2 GoAccess功能
GoAccess解析指定的Web日志文件并將數據輸出到X終端。特點包括:
-
完全實時
:所有面板和指標都定時在終端輸出上每 200 毫秒更新一次,在 HTML 輸出上每秒更新一次。 -
所需的最少配置
:您只需針對訪問日志文件運行它,選擇日志格式,然后讓 GoAccess 解析訪問日志并向您顯示統計信息。 -
跟蹤應用程序響應時間
:跟蹤處理請求所花費的時間。如果您想跟蹤減慢網站速度的頁面,則非常有用。 -
幾乎所有 Web 日志格式
:GoAccess 允許任何自定義日志格式字符串。預定義選項包括 Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront 等。 -
增量日志處理
:需要數據持久化?GoAccess 能夠通過磁盤持久性選項增量處理日志。 -
GoAccess只有一個依賴項
:是用 C 編寫的。要運行它,您只需要 ncurses 作為依賴項。就是這樣。它甚至擁有自己的 Web Socket 服務器 — http://gwsocket.io/。 -
訪問者
:按小時或日期確定點擊量、訪問者、帶寬和最慢運行請求的指標。 -
每個虛擬主機的指標
:擁有多個虛擬主機(服務器塊)?它有一個面板,顯示哪個虛擬主機消耗了大部分 Web 服務器資源。 -
ASN(自治系統編號映射)
:非常適合檢測惡意流量模式并相應地阻止它們。 -
配色方案可定制
:定制 GoAccess 以適合您自己的色彩品味/方案。通過終端,或者簡單地在 HTML 輸出上應用樣式表。 -
支持大型數據集
:GoAccess 憑借其優化的內存哈希表,能夠解析大型日志。它具有非常好的內存使用率和相當好的性能。該存儲還支持磁盤持久性。 -
Docker 支持
:能夠從上游構建 GoAccess 的 Docker 映像。您仍然可以通過使用卷映射和編輯來完全配置它goaccess.conf。
1.3 Web日志格式
GoAccess 允許任何自定義日志格式字符串。預定義的選項包括 但 不限于:
- Amazon CloudFront(下載分配)。
- Amazon Simple Storage Service (S3)
- AWS 彈性負載均衡
- 組合日志格式 (XLF/ELF) Apache |Nginx的
- 通用日志格式 (CLF) Apache
- 谷歌云存儲。
- Apache 虛擬主機
- Squid原生格式。
- W3C 格式 (IIS)。
- Caddy 的 JSON 結構化格式。
- Traefik 的 CLF風格
二、本地環境介紹
2.1 本地環境規劃
本次實踐為個人測試環境,操作系統版本為centos7.6。
hostname | 本地P地址 | 操作系統版本 | 內核版本 | node版本 |
---|---|---|---|---|
ubuntu-001192.168.3.251 | Ubuntu 22.04.1 LTS | 5.15.0-89-generic | v20.10.0 | —— |
2.2 本次實踐介紹
1.本次實踐部署環境為個人測試環境,生產環境請謹慎;
2.在Ubuntu環境下部署GoAccess工具及其基本使用。
三、檢查本地環境
3.1 檢查本地操作系統版本
檢查本地操作系統版本,當前版本為Ubuntu 22.04.1 LTS。
root@jeven:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
3.2 檢查系統內核版本
檢查系統內核版本,當前內核版本為5.15.0-89-generic。
root@jeven:~# uname -r
5.15.0-89-generic
3.3 檢查系統鏡像源
對于Ubuntu 22.04.1 LTS版本,將鏡像源配置文件/etc/apt/sources.list修改內容如下。
root@ubuntu-001:~# cat /etc/apt/sources.list
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
3.4 更新軟件列表
執行以下命令,更新軟件列包表。
root@ubuntu-001:~# apt update
Hit:1 https://mirrors.aliyun.com/ubuntu jammy InRelease
Hit:2 https://mirrors.aliyun.com/ubuntu jammy-security InRelease
Hit:3 https://mirrors.aliyun.com/ubuntu jammy-updates InRelease
Hit:4 https://mirrors.aliyun.com/ubuntu jammy-backports InRelease
Hit:5 https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
116 packages can be upgraded. Run 'apt list --upgradable' to see them.
3.5 查詢軟件
查詢軟件源中是否有 goaccess軟件包,我們可以已經成功查找到goaccess軟件包。
root@ubuntu-001:~# apt search goaccess
Sorting... Done
Full Text Search... Done
goaccess/jammy 1:1.5.5-1 amd64log analyzer and interactive viewer for the Apache Webserver
四、安裝GoAccess
4.1 編譯安裝
可以在Linux的個版本上,執行以下編譯安裝命令。
$ wget https://tar.goaccess.io/goaccess-1.9.2.tar.gz
$ tar -xzvf goaccess-1.9.2.tar.gz
$ cd goaccess-1.9.2/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install
4.2 從發行版本安裝
本次是在Ubuntu上實踐,我們可以使用以下命令安裝。
sudo apt install -y goaccess
其他發行版上安裝,可以參考以下安裝命令。
- 在 RHEL / CentOS上安裝
sudo yum install -y goaccess
- 在Fedora上安裝
sudo dnf install goaccess -y
- 在Arch Linux上安裝
sudo pacman -S goaccess
4.3 查看安裝版本
使用
--help
,可以查看goaccess詳細幫助信息。
goaccess --help
檢查安裝goaccess版本,當前安裝版本為
1.5.5
。
root@ubuntu-001:~# goaccess --version
GoAccess - 1.5.5.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2022 by Gerardo OrellanaBuild configure arguments:--enable-utf8--enable-geoip=mmdb--with-openssl
五、監控日志信息
5.1 檢查本地web服務器
本地服務器我們安裝Apache,并啟動apache2服務。
apt install apache2 -y
啟動apache2服務,并設置開機自啟。
root@ubuntu-001:~# systemctl enable --now apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
查看apache2服務狀態
root@ubuntu-001:~# systemctl status apache2
● apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2024-04-29 11:42:23 UTC; 1min 53s agoDocs: https://httpd.apache.org/docs/2.4/Main PID: 68532 (apache2)Tasks: 55 (limit: 9347)Memory: 5.1MCPU: 26msCGroup: /system.slice/apache2.service├─68532 /usr/sbin/apache2 -k start├─68533 /usr/sbin/apache2 -k start└─68534 /usr/sbin/apache2 -k startApr 29 11:42:23 ubuntu-001 systemd[1]: Starting The Apache HTTP Server...
Apr 29 11:42:23 ubuntu-001 apachectl[68531]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, us>
Apr 29 11:42:23 ubuntu-001 systemd[1]: Started The Apache HTTP Server.
lines 1-16/16 (END)
5.2 監視Apache日志
執行以下命令,監控Apache日志,其中
-f 選項
允許在命令行上實時查看日志,
goaccess -f /var/log/apache2/access.log --log-format=COMBINED
5.3 測試訪問web服務
我們在本地瀏覽器上訪問:
http://192.168.3.251/
,可以看到成功訪問到apache的初始頁面。
我們再次回到本機上,看到終端上已經成功顯示日志信息。Web 服務器的日志統計將打印在終端上。
六、通過web儀表板查看日志
6.1 本機操作
我們還可以通過重定向來將 web 服務器日志以優雅而直觀的方式呈現在一個儀表板上。我們可以將輸出文件指定為linux_web.html。
goaccess -f /var/log/apache2/access.log --log-format=COMBINED > linux_web.html
在終端查看生成的linux_web.html文件
root@ubuntu-001:~# ls -l linux_web.html
-rw-r--r-- 1 root root 344922 Apr 29 14:07 linux_web.html
6.2 瀏覽器打開日志文件
將生成的linux_web.html文件導出到本地,使用本地瀏覽器打開。
6.3 配置虛擬主機訪問
新增監聽8050端口
vim /etc/apache2/ports.conf
Listen 90
編輯Apache2的默認配置文件。運行以下命令打開000-default.conf文件進行編輯。
vim /etc/apache2/sites-available/myweb.conf
在 標簽中添加以下代碼塊來配置端口 8050 和網站目錄
Alias / /var/www/html/web/linux_web.html
<VirtualHost *:8050>ServerAdmin webmaster@localhostDocumentRoot /var/www/html/web<Directory /var/www/html/web>Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
生成日志分析網頁文件
mkdir -p /var/www/html/web
goaccess -f /var/log/apache2/access.log --log-format=COMBINED > /var/www/html/web/linux_web.html
重啟apache2服務
a2ensite myweb.conf
systemctl restart apache2
瀏覽器輸入:
http://192.168.3.251:8050/
,將IP替換為自己服務器IP地址。
七、設置中文
7.1 系統安裝中文包
系統安裝中文包
apt install language-pack-zh-hans -y
7.2 設置簡體中文
執行以下命令,設置系統簡體中文。
localectl set-locale LANG=zh_CN.utf8
可以看到Ubuntu系統的默認語言和字符集設置為簡體中文(zh_CN)
root@ubuntu-001:~# localectl statusSystem Locale: LANG=zh_CN.utf8VC Keymap: n/aX11 Layout: usX11 Model: pc105
7.3 測試訪問
重新生成日志分析文件
LANG="zh_CN.UTF-8" goaccess -f /var/log/apache2/access.log --log-format=COMBINED > /var/www/html/web/linux_web.html
systemctl restart apache2
- 終端命令行顯示
LANG="zh_CN.UTF-8" goaccess -f /var/log/apache2/access.log --log-format=COMBINED
- 重新瀏覽器訪問,可以看到已經成功切換到中文。
八、總結
GoAccess 是一款功能強大且易于使用的 Web 日志分析工具。它能夠幫助系統管理員快速了解服務器的訪問情況,提供有價值的統計信息和報告。無論是在終端中還是通過瀏覽器運行,GoAccess 都能夠帶來良好的使用體驗,并幫助用戶更好地監控和管理 Web 服務器。