AWStats 是個很老牌的分析工具,直接對 access log 分析後提供報表,本來以為是完全沒在動的專案,但從版本記錄發現 2020 年與 2023 年各有一版修安全性問題,看起來還是有在維護?
會想到要裝是因為這幾天被砍站,CPU credit balance 低到觸發我設定的 alarm:
除了處理外,也想快速看一下發生什麼事情,而這種砍站的在 JavaScript 類的分析服務上不會看到,需要直接對 server log 分析,所以就想到 AWStats 了...
Ubuntu 可以透過 sudo apt install -y awstats
安裝,裝完以後會看到 /etc/cron.d/awstats
裡面每十分鐘會自己跑一次。
預設的設定目錄在 /etc/awstats
裡面,而且有系統預設的 awstats.conf
與讓使用者蓋過去的 awstats.conf.local
,可以避免升級時直接把使用者自己設定的值蓋掉。
最少有幾個要設定需要設,可以參考官方文件「AWStats configuration directives/options」裡面的說明:
LogFile="/var/log/nginx/blog.gslin.org_ssl-access.log" LogFormat=1 SiteDomain=blog.gslin.org
接下來因為 AWStats 是 CGI script,但 nginx 不直接支援 CGI,所以需要找工具透過 FastCGI 接 CGI 程式,在這邊我是用 fcgiwrap 轉,這個軟體可以直接裝:
sudo apt install -y fcgiwrap
網路上翻文件看到也不少人是用 PHP 轉的 (應該是互相 copy & paste),也是個方法...
接下來就是去 document root 下面把 cgi-bin
以及 icon 目錄先接起來:
cd /srv/www.example.com/public sudo ln -s /usr/share/awstats/icon awstats-icon sudo mkdir cgi-bin cd cgi-bin sudo ln -s /usr/lib/cgi-bin/awstats.pl .
然後是 nginx 這邊的設定,我只放 awstats.pl
給 fcgiwrap:
location /cgi-bin/awstats.pl { include fastcgi.conf; fastcgi_pass unix:/var/run/fcgiwrap.socket; }
另外在意的人可以用 nginx 的 auth_basic
與 auth_basic_user_file
指定帳號密碼,擋外部的存取。
過個十分鐘 (或是半小時,如果 access log 比較多,第一次跑比較慢的話) 就可以直接在 https://www.example.com/cgi-bin/awstats.pl 上看到了。
這報表有種懷舊感...