๐ GoAccess ็ถฒ็ซๆต้็ฃๆงๆๅญธ:Nginx/Apache ๆฅ่ชๅณๆๅๅฝขๅ、Dashboard ๅฎ่ฃ่่จญๅฎ
ๆถ็ซไนๅพ,่ฆ็ฅ้「่ชฐๅจ็、็ไบไป้บผ、ๅช่ฃกๅบๅ้ก」,ๅฐฑไธๅฎๆ็ขฐๅฐ log ๅๆ。
ๅณ็ตฑ็จ grep、awk ๆ
ขๆ
ขๆไธๅช่ๆ้,ไนๅพ้ฃ็ตฆไธป็ฎกๆๅไบไธๅ็ด่ฆบ็ๅๅฝขๅ ฑ่กจ。
ๆฌๆ็คบ็ฏๅฆไฝๅจ Linux ไธไฝฟ็จ GoAccess,ๅพ CLI ๅณๆๅๆ ๅฐ HTML Dashboard,
ไธฆๆดๅ Nginx/Apache log_format、ๆ็จ็ข็ๆฏๆฅๅ ฑ่กจ่ ๅๅไปฃ็+HTTPS ็ๅฎๆดๅฏฆๆฐๆต็จ。
๐ ็ฎ้
- ไธ、GoAccess ๆฏไป้บผ?้ฉๅๅชไบๆ ๅข?
- ไบ、GoAccess ๅฎ่ฃ่ๅบๆฌไฝฟ็จ(CLI ๆจกๅผ)
- ไธ、Nginx / Apache log_format ่จญๅฎ่ๅธธ่ฆๆ ผๅผ
- ๅ、CLI ๅณๆๅๆ:ๅ top ไธๆจฃ็็ถฒ็ซๆต้
- ไบ、HTML Dashboard:--real-time-html ๅณๆๅๅฝขไป้ข
- ๅ ญ、ๆ็จๆฏๆฅๅ ฑ่กจ:cron ่ชๅ็ข็ HTML ๅๆ้
- ไธ、ๅๅไปฃ็ + HTTPS:Nginx Proxy ่ WebSocket ่จญๅฎ
- ๅ ซ、ๅฏฆๆฐๅปบ่ญฐๆต็จ:ๅพๅๅง log ๅฐๅฏๅไบซ็ๅ ฑ่กจ
- ไน、ๅธธ่ฆๅ้ก่ๆ้ฏๆธ ๅฎ
- ๐ ่กๅๆธ ๅฎ(Checklist)
- ๐ ๅปถไผธ้ฑ่ฎ
ไธ、GoAccess ๆฏไป้บผ?้ฉๅๅชไบๆ ๅข?
GoAccess ๆฏไธๅฅ็จ C ๅฏซๆ็ ่ผ้็ด Web ๆฅ่ชๅๆๅทฅๅ ท,ๅฏๆฏๆด:
- ็ต็ซฏๆฉๅณๆไป้ข(CLI):้กไผผ
htop็ไบๅ็ซ้ข。 - HTML Dashboard:ไบๅๅผๅ่กจ、ๆๅบ、็ฏฉ้ธ。
- ๆฏๆด Nginx / Apache / CloudFront ็ญๅธธ่ฆๆ ผๅผ。
- ๅฏ้กฏ็คบ:็ฑ้้ ้ข、HTTP ็ๆ ็ขผ、User-Agent、ไพๆบๅๅฎถ、Referer、Response Time ็ญ。
้ฉ็จๆ ๅข:
- ไฝ ๅทฒ็ถๆ Nginx/Apache log,ไฝ้ๆฒๆฅ GA4 ๆๅชๆณ็ server ็ซฏ็ๅฏฆๆต้。
- ๆณๅ ๅ ง้จๅ ฑ่กจ,ไฝไธๆณๆๆๆ่ณๆไธ็ตฆ็ฌฌไธๆน。
- ็จ Squid Proxy / ๅๅไปฃ็,ๅธๆๅฟซ้่งๅฏๆต้่็ฐๅธธ็ๆ 。
ไบ、GoAccess ๅฎ่ฃ่ๅบๆฌไฝฟ็จ(CLI ๆจกๅผ)
ไปฅไธไปฅๅธธ่ฆ Linux ็ผ่ก็็บไพ:
1. Debian / Ubuntu ็ณปๅ
# ๆดๆฐๅฅไปถ็ดขๅผ
sudo apt update
# ๅฎ่ฃ GoAccess
sudo apt install goaccess -y
2. RHEL / CentOS / Rocky / AlmaLinux
้จๅ็ๆฌ้่ฆๅ็จ EPEL ๆๅฎๆน repo:
# ๅฎ่ฃ EPEL(ไพๅฏฆ้็ๆฌ่ชฟๆด)
sudo yum install epel-release -y
# ๅฎ่ฃ GoAccess
sudo yum install goaccess -y
# ๆ dnf
# sudo dnf install goaccess -y
3. ็ขบ่ช็ๆฌ
goaccess --version
ๆๅบๆฌ็ไฝฟ็จๆนๅผๆฏ็ดๆฅๆๅฎ log ๆช่ๆ ผๅผ:
# ไปฅ Nginx ้ ่จญๆ ผๅผ็บไพ
goaccess /var/log/nginx/access.log \
--log-format=COMBINED \
--time-format=%T \
--date-format=%d/%b/%Y
้ฒๅ
ฅๅพๅณๅฏๅจ็ต็ซฏๆฉ็ๅฐไบๅ็ซ้ข,้้ๆนๅ้ต、Tab ๅๆไธๅๅๆ้ขๆฟ,
ไพๅฆ「Requests」「Visitors」「HTTP Status」「OS」「Browsers」็ญ。
ไธ、Nginx / Apache log_format ่จญๅฎ่ๅธธ่ฆๆ ผๅผ
GoAccess ่งฃๆ็้้ตๅจๆผๆฅ่ชๆ ผๅผๅฟ
้ ็ฒพๆบๅฐๆ。ๅฎๆนๅทฒๅ
งๅปบ้จๅ้ ่จญ(ไพๅฆ
COMBINED),ไฝๅฆๆไฝ ๆ่ช่จ log_format,ๅฐฑ่ฆๆๅๆๅฎ。
1. Nginx:ๅธธ่ฆ log_format ่จญๅฎ
ๅจ /etc/nginx/nginx.conf ๆ site config ไธญ,ๅธธ่ฆ็่จญๅฎๅฆไธ:
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time';
access_log /var/log/nginx/access.log main;
ๅฐๆ GoAccess ๅฏไปฅ้ๆจฃๅฎ็พฉ:
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u" %T
ๅปบ่ญฐๅปบ็ซไธๅ /etc/goaccess/goaccess.conf ่จญๅฎๆช,ๅฐไธ่ฟฐๅ
งๅฎนๅฏซๅ
ฅ,
ไนๅพๅท่กๆๅฐฑไธ็จๆฏๆฌกๆไธ้ทไธฒๅๆธ。
2. Apache:ๅธธ่ฆ log_format ่จญๅฎ
Apache ้ ่จญ็ combined log_format ้ๅธธๅฆไธ:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "/var/log/httpd/access_log" combined
ๅฐๆ GoAccess ่จญๅฎ:
time-format %T
date-format %d/%b/%Y
log-format %h %^ %e [%d:%t %^] "%r" %s %b "%R" "%u"
ๅฆๆไฝ ็ log_format ๆ้กๅคๆฌไฝ(ไพๅฆ %v、%{X-Forwarded-For}i、%D),
ๅปบ่ญฐๅจๆญฃๅผไธ็ทๅ,ๅ
็จ goaccess --dcf ๆธฌ่ฉฆ่งฃๆๆฏๅฆๆญฃๅธธ。
ๅ、CLI ๅณๆๅๆ:ๅ top ไธๆจฃ็็ถฒ็ซๆต้
CLI ๆจกๅผๆๅคง็ๅช้ปๆฏ:ไฝ ๅฏไปฅ็ดๆฅ SSH ้ฒ server,ๅ็ top ไธๆจฃ็ๆต้่ฎๅ。 ้ฉๅ็พๅ ดๆ้ฏ、ๅฃๅๆธฌ่ฉฆ、็ฐๅธธๆต้็ฃๆง。
1. ่ฎๅๆญทๅฒ log(ๆนๆฌกๆจกๅผ)
sudo goaccess /var/log/nginx/access.log \
-p /etc/goaccess/goaccess.conf
2. ๅณๆๆจกๅผ:ๆญ้ tail -F
# ๆนๅผไธ:็ดๆฅๅจ GoAccess ๅ
ง่ท้จๆชๆก
sudo goaccess /var/log/nginx/access.log \
-p /etc/goaccess/goaccess.conf \
--real-time-html -o /tmp/ignore.html
# (้็ถ็ขๅบ HTML,ไฝไฝ ไนๅฏไปฅๅช็จ CLI ็ถไธ็)
# ๆนๅผไบ:้้็ฎก็ท
sudo tail -F /var/log/nginx/access.log | \
goaccess -p /etc/goaccess/goaccess.conf
ๅธธ็จๅฟซๆทๆไฝ:
- Tab:ๅๆไธๅๅๆ้ขๆฟ。
- s:ๅๆๆๅบๆฌไฝ。
- o:ๅๆๆๅบๆนๅ(้ๅข/้ๆธ)。
- g / G:่ทณๅฐๅ่กจ้ ็ซฏ/ๅบ็ซฏ。
- q:้ข้็จๅผไธฆ่ผธๅบ็ตๆ(ๆนๆฌกๆจกๅผ)。
ไบ、HTML Dashboard:--real-time-html ๅณๆๅๅฝขไป้ข
ๅฐๆผ้่ฆๅฑ็คบ็ตฆไธป็ฎก、ๅไบๆๅฎขๆถ็็ไบบไพ่ชช, HTML Dashboard ๆฏ GoAccess ๆๆๅนๅผ็ๅ่ฝไนไธ。
1. ๅปบ็ซ่ณๆ็ฎ้่ๅ ฑ่กจ่ทฏๅพ
sudo mkdir -p /var/www/goaccess
sudo chown -R www-data:www-data /var/www/goaccess # ไพไฝ ็ Web ไฝฟ็จ่
่ชฟๆด
2. ๅๅ GoAccess ๅณๆ HTML ๆจกๅผ
ไปฅไธไปฅ Nginx ็บไพ:
sudo goaccess /var/log/nginx/access.log \
-p /etc/goaccess/goaccess.conf \
--real-time-html \
--ws-url=ws://127.0.0.1:7890 \
--port=7890 \
-o /var/www/goaccess/index.html
ๅๆธ่ชชๆ:
--real-time-html:ๅ็จๅณๆๆดๆฐ็ HTML Dashboard。--ws-url:WebSocket URL,ไนๅพๆ็ฑ Nginx Proxy ่ฝ็ผ。--port:GoAccess ๅ งๅปบ WebSocket server ็ฃ่ฝ port。-o:่ผธๅบ Dashboard HTML ่ทฏๅพ。
ๅท่กๅพ,/var/www/goaccess/index.html ๅฐฑๆๆฏไธๅๅฏไปฅ้้็่ฆฝๅจๆฅ็็
ๅณๆๆต้ Dashboard,ๅช่ฆ WebSocket ๆญฃๅธธ้ฃ็ท,ๅฐฑๆไธๅๆดๆฐ。
ๅ ญ、ๆ็จๆฏๆฅๅ ฑ่กจ:cron ่ชๅ็ข็ HTML ๅๆ้
้คไบๅณๆ Dashboard,ๅพๅคๆ ๆณไฝ ๅช้่ฆ ๆฏๆฅ/ๆฏ้ฑ ็้ๆ ๅ ฑ่กจ, ๆฏๆน่ชชๆฏๅคฉๆฉไธ็ๅไธๅคฉ็็ฑ้้ ้ข、้ฏ่ชค็ขผๆๅค้จๅฐๆตไพๆบ。
1. ๆฐๅฏซ็ข็ๅ ฑ่กจ่ ณๆฌ
ๅปบ็ซไธๅ็ฐกๅฎ็ shell script,ไพๅฆ /usr/local/sbin/gen-goaccess-report.sh:
#!/usr/bin/env bash
LOG=/var/log/nginx/access.log
REPORT=/var/www/goaccess/daily-$(date +%F).html
CONF=/etc/goaccess/goaccess.conf
goaccess "$LOG" \
-p "$CONF" \
-o "$REPORT" \
--html-report-title="Daily Report - $(date +%F)"
่จๅพ็ตฆๅท่กๆฌ้:
sudo chmod +x /usr/local/sbin/gen-goaccess-report.sh
2. ไฝฟ็จ cron ๆ็จๆฏๆฅ็ๆ
ไปฅ root ่บซๅ็ทจ่ผฏ crontab:
sudo crontab -e
ๅ ๅ ฅๆ็จ(ไพๅฆๆฏๅคฉ 02:10 ็ข็ๅไธๅคฉๅ ฑ่กจ):
10 2 * * * /usr/local/sbin/gen-goaccess-report.sh >/var/log/goaccess_cron.log 2>&1
ไนๅพไฝ ๅฏไปฅๅจๆๅ「ๅ ฑ่กจ็ดขๅผ้ 」ๆๅ
ง้จ Wiki ไธญ,ๆพไธ
/var/www/goaccess/daily-YYYY-MM-DD.html ็้ฃ็ต,
่ฎๅ้ๅฏไปฅๅ้ ญๆฅๆญทๅฒๆต้。
ไธ、ๅๅไปฃ็ + HTTPS:Nginx Proxy ่ WebSocket ่จญๅฎ
ๅคๆธๆ ๆณไฝ ไธๆ็ดๆฅๅจ 7890 port ้ๆพ็ตฆๅค็ถฒ,่ๆฏ็ฑ Nginx ๅๅไปฃ็, ไธไฝต่็ HTTPS ่ WebSocket ่ฝ็ผ。
1. Nginx ็ซๅฐ่จญๅฎ็ฏไพ
ๅปบ็ซๆ็ทจ่ผฏไธๅ server block,ไพๅฆ:
server {
listen 443 ssl;
server_name goaccess.example.com;
ssl_certificate /etc/letsencrypt/live/goaccess.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/goaccess.example.com/privkey.pem;
root /var/www/goaccess;
# ๆไพ HTML Dashboard
location / {
try_files $uri /index.html;
}
# WebSocket Proxy
location /ws/ {
proxy_pass http://127.0.0.1:7890/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
ๅฐๆ GoAccess ็ๅๅๆนๅผ:
sudo goaccess /var/log/nginx/access.log \
-p /etc/goaccess/goaccess.conf \
--real-time-html \
--ws-url=wss://goaccess.example.com/ws/ \
--port=7890 \
-o /var/www/goaccess/index.html
ๆณจๆ:
--ws-urlๆนๆ wss + ๅๅไปฃ็่ทฏๅพ。- Nginx ็
location /ws/่จญๅฎๅฟ ้ ่ไนๅฐๆ。 - ๅค้จไฝฟ็จ่
ๅชๆ็ๅฐ
https://goaccess.example.com/,ๅ ง้จ็ฑ Nginx ่็ๅ ๅฏ่่ฝ็ผ。
ๅ ซ、ๅฏฆๆฐๅปบ่ญฐๆต็จ:ๅพๅๅง log ๅฐๅฏๅไบซ็ๅ ฑ่กจ
- ็ขบ่ช Nginx/Apache ็ log_format ๅทฒๅบๅฎ,ๅ ไธ่ฆ้จๆๆนๆฌไฝ。
- ๅจ
/etc/goaccess/goaccess.confไธญๅฎ็พฉtime-format、date-format、log-format。 - ๅ ็จ CLI ๆจกๅผ่ทไธๆฌกๆญทๅฒ log,็ขบ่ช ๆฒๆๅคง้「็กๆณ่งฃๆ」้ฏ่ชค。
- ๅ็จ --real-time-html,้ฉ่ญ HTML Dashboard ๆฏๅฆๆญฃๅธธๆดๆฐ。
- ้้ Nginx / Apache ๅๅๅไปฃ็่ HTTPS,ๅ ไธ็ฐกๅฎ็ IP ้ๅถๆ Basic Auth。
- ๅฏซ cron ่ ณๆฌ,็ขๅบๆฏๆฅ、ๆฏ้ฑ、ๆฏๆๅ ฑ่กจ,ๆพๅจๅ ง้จๅ ฅๅฃ้ ไธญ。
- ๆๅพๅๆญ้ Proxy / ้ฒ็ซ็ / Fail2Ban ๆ็ซ ,ๆ log ๅๆ็ดๅ ฅๆฅๅธธ็ถญ้ๆต็จ。
ไน、ๅธธ่ฆๅ้ก่ๆ้ฏๆธ ๅฎ
-
ๅ้กไธ:็ซ้ข็ฉบ็ฝ、ๆๆๆฌไฝ้ฝๆฏ 0
→ ้ๅธธๆฏlog-formatไธ็ฌฆ,่ซๅ ็จ--debug-fileๅฏซๅบ debug log ๆฅ็。 -
ๅ้กไบ:ๆ้้กฏ็คบ้ฏ่ชค,ๆฅๆ่ทๅฐๆชไพๆ้ๅป
→ ๆชขๆฅๆฅ่ชไธญ็ๆ้ๆ ผๅผ,้ๆฐ่จญๅฎtime-format่date-format。 -
ๅ้กไธ:HTML Dashboard ้ๅ,ไฝๆธๆไธๆดๆฐ
→ ๆชขๆฅ็่ฆฝๅจ้็ผ่ ๅทฅๅ ท็ WebSocket ้ฃ็ทๆฏๅฆๆๅ;็ขบ่ช Nginx Proxy ็ Upgrade/Connection ๆจ้ ญ่จญๅฎ。 -
ๅ้กๅ:CPU ไฝฟ็จ็ๅ้ซ
→ ็ขบ่ชๆฏๅฆๆไธๆฌก่็้ๅคๆญทๅฒ log,ๅฏๅ ไฝฟ็จ logrotate ๅๅฒ,ๅ้ๅฐ่ฟๆ log ๅๅณๆๅๆ。 -
ๅ้กไบ:ๅคๅฐ Web ็ฏ้ป็ log ๆณๅไฝตๅๆ
→ ๅฏไปฅ้้rsyncๆ้ไธญ log ๅฐไธๅฐๅๆๆฉ,ๅๅฐๅคๅๆชๆกไธฒ่ตทไพไพ GoAccess ไฝฟ็จ。
๐งญ ่กๅๆธ ๅฎ(Checklist)
✅ ๅจ /etc/goaccess/goaccess.conf ไธญๅฎ็พฉๆญฃ็ขบ็ log-format
✅ ไฝฟ็จ CLI ๆจกๅผๅ
้ฉ่ญไธๅฐๆฎต access.log ๆฏๅฆ่ฝๆญฃ็ขบ่งฃๆ
✅ ๅ็จ --real-time-html ไธฆๆชขๆฅ HTML Dashboard ๆดๆฐ็ๆณ
✅ ้้ Nginx/Apache ๅๅไปฃ็,ๅฐ Dashboard ๆพๅฐ HTTPS ็ถฒๅไธ
✅ ่จญๅฎ cron ๆ็จ,็ข็ๆฏๆฅ/ๆฏ้ฑ้ๆ
ๅ ฑ่กจไพๅ้ๆฅ้ฑ
✅ ๅฐ GoAccess ็ดๅ
ฅๆฅๅธธ็ถญ้ๆต็จ:็ฐๅธธๆต้、404/5xx、็ฑ้้ ้ข็ค้ป
๐ฌ ไบๅ็่จ
๐ก ็ไธไฝ ็ๅฏฆๆฐ็ถ้ฉ,่ฎ้็ฏ GoAccess ๆๅญธๅฐๆดๅคไบบๆดๆๅนซๅฉ。
- ไฝ ็ฎๅๆฏๅฆไฝ่งๅฏ็ถฒ็ซๆ Proxy ็ๆต้่กจ็พ?
- ๆๆฒๆ้้「็ log ็ๅฐ็ผ่ฑ」ไฝๆๅพ้ ๆๅๅทฅๅ ทๆๅไพ็ๆกไพ?
- ๆชไพๆณ็ๅชไธ้ก「log ๅๆ / ็ฃๆง」็ธ้ๆๅญธ?
๐ก 「็ไธไฝ ็่ง้ป,่ฎ่จ่ซๆด็ฒพๅฝฉ!」ๆญก่ฟๅจไธๆน็่จๅๅไบซไฝ ็ๅๆณๆๅ้ก。
๐ ๅปถไผธ้ฑ่ฎ
-
๐งฑ Linux Proxy Server ๅปบ็ฝฎๆๅญธ(Squid ๅฎ่ฃ่่จญๅฎๆๅ) – ๆญ้
GoAccess ๅๆ Proxy ๆต้ๆดๅฎๆด。
๐ ๆฅ็ Squid ็ธ้ๆ็ซ -
๐ง Linux ้ฒ็ซ็ๅฎๆด่งฃๆ:iptables ่ nftables ๆถๆง、่ฆๅ、ๅทฎ็ฐ่ๆไฝณๅฏฆๅ
๐ Linux ้ฒ็ซ็ๆๅญธ -
๐ง ไธ่กๆๅฎ!Linux ็ฎก็ท็ฌฆ่่ๆๅญ่็ๅทฅๅ
ทๅฎๆดๆๅญธ(grep / awk / sed / sort / uniq / wc ...)
๐ Linux ๆๅญ่็ๆๅญธ -
๐ง Linux systemd ๆทฑๅ
ฅ่งฃๆ่ๅๅๆต็จ็ฎก็ – ไบ่งฃๆๅๅๅ้่่ณๆบๆงๅถ,ๆญ้
log ๅๆๆดๅฅฝๆฅๅ้ก。
๐ systemd ๆทฑๅ ฅ่งฃๆ -
๐ง Linux SSH ๅฎๅ
จๅผทๅๆๅ:้้ฐ็ปๅ
ฅ、Port ่ฝ็งป่ Fail2Ban ๆดๅ
๐ SSH ๅฎๅ จๅผทๅๆๅญธ
๐ ็ต่ช
GoAccess ไธๆฏ่ฆๅไปฃ GA4 ๆๅ็จฎ้ฒ็ซฏๅๆๆๅ,่ๆฏๆไพไธ็จฎ ็ซๅจไผบๆๅจ่งๅบฆ、ๆฅ่ฟ็ๅฏฆๆต้็่ฆ่ง。 ๅฐๆผ็ณป็ตฑ่็ถฒ่ทฏ็ฎก็่ ไพ่ชช,ๅฎ่ฝๅจไฝ ้ไพไธๅ็ปๅ ฅๅ็จฎๅนณๅฐไนๅ, ๅฐฑๅ ่ฎไฝ ็ๅฐ:「็พๅจๅฐๅบ็ผ็ไบไป้บผไบ」。
ๅปบ่ญฐไฝ ๅ ๅพ CLI ๆจกๅผ้ๅง็ๆ,็ขบ่ช log ๆ ผๅผ่่ณๆๅ่ณช็ก่ชค,ๅๆ ขๆ ขๅฐๅ ฅ HTML Dashboard、ๆ็จๅ ฑ่กจ่ๅๅไปฃ็。็ถ้ไธๅฅๆต็จ็ฉฉๅฎไธไพ, ไธๅชๆฏๆฅๅธธ็ถญ้ๆ่ผ้ฌ่จฑๅค,ไฝ ๅจ้ขๅฐ็ช็ผไบไปถ、ๅฐๆก็ฐกๅ ฑ่่ทจ้จ้ๆบ้ๆ,ไนๆๅคไธไปฝๅบๆฐฃ。
— WWFandy・็ณป็ตฑ่็ถฒ่ทฏ็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ