使用goaccess监控系统
GoAccess 是一款开源的实时 Web 日志分析工具,它能快速解析服务器日志(如 Nginx、Apache 等),并将分析结果以交互式视图的形式直接在终端或浏览器中展示,帮助系统管理员高效监控 HTTP 流量、排查问题及优化性能。
获取镜像
# 拉取镜像
docker pull allinurl/goaccess:1.9.4@sha256:c533452f721d0b6517456cddae80047f8cf98b3ce50fc4f90973cc5449994f29
# 给镜像打标签
docker tag 950d555a3bca allinurl/goaccess:1.9.4
# 保存镜像到本地
docker save -o goaccess-arm.tar allinurl/goaccess:1.9.4
# 在新的服务器,上传备份的镜像并导入镜像
docker load -i goaccess-arm.tar
手动生成报告
1、创建镜像,注意/data/public/nginx/logs为nginx日志路径
mkdir -p /data/docker/goaccess/data
mkdir -p /data/docker/goaccess/report
docker run --restart=always -d -p 7890:7890 \-v "/data/docker/goaccess/data:/srv/data" \-v "/data/docker/goaccess/report:/srv/report" \-v "/data/public/nginx/logs:/srv/logs" \--name=goaccess allinurl/goaccess:1.9.4 -f /srv/logs/access.log -o index.html --real-time-html --log-format=COMBINED
2、进入镜像
docker exec -it goaccess sh
3、执行命令生成报告
goaccess /srv/logs/access.log -o /srv/report/report.html --log-format=COMBINED
4、下载report.html页面,然后用浏览器打开即可

配置实时网站
1、创建镜像
mkdir -p /data/docker/goaccess/data
mkdir -p /data/docker/goaccess/report
docker run --restart=always -d --network=host \-v "/data/docker/goaccess/data:/srv/data" \-v "/data/docker/goaccess/report:/srv/report" \-v "/data/public/nginx/logs:/srv/logs" \--name=goaccess allinurl/goaccess:1.9.4 -f /srv/logs/access.log -o /srv/report/index.html --real-time-html --log-format=COMBINED --ws-url=192.168.2.2:7890
2、配置nginx
server {listen 81;server_name localhost;server_tokens off;# 监控测试,勿删location / {root /data/docker/goaccess/report/;index index.html index.htm;}# 添加goaccess websocket 服务location /wss {proxy_redirect off;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 $http_host;}}
3、设置权限
chown root:root /data/docker/goaccess/report/index.html
chmod 777 /data/docker/goaccess/report/index.html
4、开放访问端口
firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="192.168.2.3" port port="81" protocol="tcp" accept" && firewall-cmd --reload
5、远程访问http://192.168.2.3:81/index.html

