最近在優化網站訪問鏈路的過程中,部署了一套WAF防火牆,它大部分功能都做得挺好,美中不足的地方就是針對於網站訪客的相關功能需要付費(3600元/年)才能用。
付費是不可能付費的,找了一圈nginx日誌分析的開源專案,大部分都做得挺簡陋的,要麼就是做得很重,需要部署其他服務。
既然找不到合適的,那就自己動手寫一個吧!
做了4個模組對日誌數據進行分析。

概況模組中,做了8個維度的數據分析。
在這個維度中,針對http狀態碼、瀏覽量、訪客數、會話數做了更細緻的劃分。

每一個劃分中,在詳情面板裡,都可以看到這個訪客在什麼時間做了什麼事情。




這一部分可以看到每天的訪問趨勢以及當天與前一天的新老訪客佔比。

這部分可以看到訪客的來源,以及每個路徑的訪問次數。

這部分可以看到每個省份的訪問情況以及訪問設備的分佈情況。

在這個模組中,可以看到每天的瀏覽量、訪客數、平均訪問時長等信息。


在這個模組裡,可以查看最近5/15/30分鐘內的訪問情況

這個模組就以表格的形式展示每一條日誌。

為了方便使用,我已經將這個專案打包成映像發布到dockerhub上了,映像名為magiccoders/nginxpulse,可以通過docker的形式使用,也可以通過docker compose的形式使用。
需要傳入的參數:
此處我以docker compose的形式舉例:
version: "3"
services:
nginxpulse:
image: magiccoders/nginxpulse:latest
container_name: local_nginxpulse
ports:
- "9200:8088"
environment:
WEBSITES: '[{"name":"神奇的程序員","logPath":"/var/log/nginx/access.log","domains":["kaisir.cn","www.kaisir.cn"]}]' #domains用於“來源(referer)統計”的站內/站外分類
PV_EXCLUDE_IPS: '["127.0.0.1", "::1", "10.10.0.1", "192.168.30.21"]' #pv統計時需要排除的ip
volumes:
- ./nginx_data/logs/all/access.log:/var/log/nginx/access.log
- ./nginxpulse_data:/app/nginxpulse_data
- /etc/localtime:/etc/localtime
restart: unless-stopped
至此,文章就分享完畢了。
我是神奇的程序員,一位前端開發工程師。
如果你對我感興趣,請移步我的個人網站,進一步了解。