๐ Linux Log ๅๆ่่ฆ่ฆบๅ:GoAccess ๅณๆ็ฃๆง
ๆณๅฟซ้ๆๆกไผบๆๅจ่จชๅ็ๆณ่็ฐๅธธๆต้ๅ? GoAccess ๆฏไธๆฌพ่ผ้็ดไธๅณๆ็ Linux Log ๅๆๅทฅๅ ท, ้้็ต็ซฏไป้ขๆ Web Dashboard,ๅฐฑ่ฝๅฟซ้็ๅบ ็ฑ้้ ้ข、ไพๆบๅฐ、User-Agent ่ๆปๆ่ก็บ。 ๆฌ็ฏๅฐๅธถไฝ ๅพๅฎ่ฃ、้ ็ฝฎๅฐ HTML ๅณๆๅ ฑ่กจ็ๅฎๆดๆต็จ。
๐ ไธ、GoAccess ๆฏไป้บผ?
GoAccess ๆฏไปฅ C ่ช่จ้็ผ็้ๆบๅทฅๅ ท,่ฝๅณๆๅๆ Apache、Nginx、Squid ็ญๅธธ่ฆไผบๆๅจๆฅ่ช。 ๆฏๆด ๅฝไปคๅไบๅไป้ข(ncurses) ่ Web ่ฆ่ฆบๅๅ ฑ่กจ, ไธฆๅฏ่ผธๅบ JSON、HTML、CSV ็ญๆ ผๅผไพๅพ็บๅๆ。
# ๅฎ่ฃ(Rocky / CentOS / Ubuntu)
sudo dnf install goaccess -y
# ๆ
sudo apt install goaccess -y
# ๆชขๆฅ็ๆฌ
goaccess --version
๐งฉ ไบ、่จญๅฎๆฅ่ชไพๆบ่ๆ ผๅผ
GoAccess ้ ่จญๅๆ /var/log/nginx/access.log ๆ /var/log/httpd/access_log。
่ฅไฝฟ็จ่ช่จๆ ผๅผ,ๅฏๅจ /etc/goaccess/goaccess.conf ไฟฎๆน log-format。
# Nginx ๅธธ่ฆๆ ผๅผ(ๅปบ่ญฐๅ ๅ
ฅ log_format ๆผ nginx.conf)
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
# ๅท่กๅๆ
sudo goaccess /var/log/nginx/access.log --log-format=COMBINED
๐ง ไธ、ๅณๆ Web ๅ ฑ่กจๆจกๅผ
GoAccess ๅฏ็ดๆฅ่ผธๅบๅณๆๅฏ่ฆๅๅ ฑ่กจ,้ฉๅๆพๅ ฅๅ ง้จ็ฃๆง้ ้ข:
# ็ๆๅณๆ็ฃๆง HTML
sudo goaccess /var/log/nginx/access.log \
--log-format=COMBINED \
--real-time-html \
--ws-url=ws://your-server:7890 \
-o /var/www/html/report.html
- --real-time-html:ๅ็จๅณๆ WebSocket ๅ ฑ่กจ。
- --ws-url:่จญๅฎไผบๆๅจ้ฃ็ทไฝๅ。
- -o:่ผธๅบ HTML ๆชๆก่ทฏๅพ。
๐ ๅ、ๅธธ่ฆๅๆ้้ป
- General Statistics:็ธฝ่จชๅๆธ、่ซๆฑๆๅ็。
- Visitor Hostnames & IPs:ๅฏๅคๆทๆปๆไพๆบ。
- Requested Files:็ฑ้้ ้ข่้ฏ่ชค้ 。
- HTTP Status Codes:ๅฆ 404、403、500 ้ ป็。
- Referrers / User Agents:ๅๆๆต้ไพๆบ。
๐งญ ไบ、่ๅฎๅ จๆฉๅถๆดๅ
GoAccess ๅฏ่ไฝ ๅ ๅ้จ็ฝฒ็ Fail2Ban / Firewalld ๆดๅๅฝขๆ้็ฐ:
# ๆฏๆฅ่ชๅๅฏๅบ้ซ้ขจ้ช IP ไธฆๅฐ้
sudo goaccess /var/log/nginx/access.log -a -o report.json --log-format=COMBINED
cat report.json | jq '.data | map(select(.status >= 400)) | .[].host' | sort | uniq > bad_ip.txt
for ip in $(cat bad_ip.txt); do sudo firewall-cmd --add-rich-rule="rule family='ipv4' source address='$ip' reject"; done
ๆญ้ crontab ๅฏๆฏๆฅ่ชๅๆธ ็ๅฐ้ๅๅฎ,ๅฝขๆ「็ฃๆง → ๅฐ้ → ๅ ฑ่กจ」ๅพช็ฐ。
⚙️ ๅ ญ、ๅปถไผธๆ็จ
- ๆดๅ Grafana Loki、ElasticSearch ้ฒ่ก้ทๆ่ถจๅขๅๆ。
- ๅปบ็ซ systemd service ๅธธ้งๅท่ก GoAccess ๅณๆๅๆ。
- ๆญ้ Proxy / Fail2Ban ่จ้,้ฒ่กๅ จๆนไฝๅฎๅ จๅฏ่ฆๅ。
๐ ็ต่ช
GoAccess ๆฏไฝๆๆฌ、้ซๅณๆๆง็ Linux Log ๅๆๅฉๅจ, ๅฐไธญๅฐๅไผบๆๅจๆๅไบบ็ซ้ป่่จ,ๆฏไบ่งฃๆต้่ๆปๆ่ก็บ็ๆไฝณ่ตท้ป。 ๆญ้ systemd、Fail2Ban ่ Firewalld,ไฝ ๅฐๆๆไธๅฅๅฎๆด็「ๅฎๅ จ × ๅฏ่ฆๅ็ฃๆง้ซ็ณป」。
๐ ๅปถไผธ้ฑ่ฎ
- ๐ Fail2Ban + iptables ้ฒๆดๅ็ ด่งฃๅฏฆๆฐ(SSH ่ๅธธ่ฆๆๅ)
- ๐งฉ Linux ๅฎๅ จๅผทๅๅฏฆๆฐ:Firewalld、SELinux ่ Fail2Ban ๆดๅๆๅ
- ๐ง Linux systemd ๆทฑๅ ฅ่งฃๆ่ๅๅๆต็จ็ฎก็
— WWFandy・Linux ๅฎๅ จ็ณปๅ็ฌฌๅ็ฏ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ