轻量级 Nginx 日志分析和可视化平台 NginxPulse安装

NginxPulse 整体介绍

NginxPulse ​ 是一个开源(MIT 协议,GitHub: likaia/nginxpulse)的轻量级 Nginx 访问日志分析与可视化面板,定位是"GoAccess 的现代化替代品 + 不入侵架构的站内统计"。

  • 技术栈 :Go(Gin)后端 + Vue3 前端,打包成单一 Docker 镜像;新版本(>1.5.3)内置 PostgreSQL​ 做长期存储(老版本用 SQLite),也支持单机二进制运行。

  • 核心能力

    • 实时 PV/UV、QPS 趋势、状态码(2xx/3xx/4xx/5xx)分布
    • 客户端 IP 归属地(本地 ip2region + 远程 ip-api 双策略)、UA/浏览器/OS 解析
    • 热门 URL、Referer 来源、多站点统一管理
    • 直接读 标准/自定义 Nginx 日志格式 、支持 .gz 压缩历史日志、按天切割通配、断点续传
    • 可排除内网/爬虫 IP(PV_EXCLUDE_IPS),支持 SFTP/HTTP/S3 拉远端日志
    • 移动端 /m 页面、首次启动有 Web 初始化向导
  • 不是什么:不是 APM、不是告警系统、不替代 Prometheus+Grafana,纯粹是"把 access.log 变成图表"的轻量阅读器,适合个人站/中小运维快速看流量。

看下效果图:

Docker 安装教程(最常用路径)

1. 准备宿主机目录与日志

bash 复制代码
# 数据目录
mkdir -p /data/nginxpulse/{logs,nginxpulse_data,pgdata,configs}
chmod 777 /data/nginxpulse

# 假设你本机 Nginx 日志在 /var/log/nginx/access.log
# 确保容器能读到(挂载时用 :ro)

2. 单条 docker run(最快验证)

javascript 复制代码
docker run -d --name nginxpulse \
  -p 8088:8088 \
  -p 8089:8089 \
  -e WEBSITES='[{"name":"主站","logPath":"/share/log/nginx/access.log","domains":["example.com","www.example.com"]}]' \
  -v /var/log/nginx/access.log:/share/log/nginx/access.log:ro \
  -v /data/nginxpulse/nginxpulse_data:/app/var/nginxpulse_data \
  -v /data/nginxpulse/pgdata:/app/var/pgdata \
  -v /data/nginxpulse/configs:/app/configs \
  -v /etc/localtime:/etc/localtime:ro \
  magiccoders/nginxpulse:latest
  • 8088 = 前端面板,8089 = 后端 API
  • 浏览器开 http://服务器IP:8088 → 首次进初始化向导填日志路径也行,或直接用 WEBSITES 环境变量注入(推荐环境变量,避免向导踩坑)

3. docker-compose 部署(生产推荐)

/data/nginxpulse/docker-compose.yml

javascript 复制代码
version: "3.8"
services:
  nginxpulse:
    image: magiccoders/nginxpulse:latest
    container_name: nginxpulse
    ports:
      - "8088:8088"
      - "8089:8089"
    environment:
      TZ: Asia/Shanghai
      WEBSITES: '[{"name":"主站","logPath":"/share/log/nginx/access.log","domains":["example.com"]}]'
    volumes:
      - /var/log/nginx/access.log:/share/log/nginx/access.log:ro
      - /data/nginxpulse/nginxpulse_data:/app/var/nginxpulse_data
      - /data/nginxpulse/pgdata:/app/var/pgdata
      - /data/nginxpulse/configs:/app/configs
      - /etc/localtime:/etc/localtime:ro
    stop_grace_period: 90s   # 给内置 PG 优雅关闭
    restart: unless-stopped

启动:

bash 复制代码
cd /data/nginxpulse
docker compose up -d
docker compose logs -f nginxpulse

4. 多站点 / 多日志配置

WEBSITES 是 JSON 数组,可配多个:

css 复制代码
[  {"name":"主站","logPath":"/share/log/nginx/access.log","domains":["example.com"]},
  {"name":"博客","logPath":"/share/log/blog.log","domains":["blog.example.com"]}
]

挂载时把对应日志都挂进容器,路径要跟 logPath 一致。logPath 支持通配如 /share/log/nginx/access-*.log

5. 常见坑

  • PV 一直是 0 → 默认排除内网 IP,设 PV_EXCLUDE_IPS='[]' 可包含;或确认日志格式是否被自动识别(自定义格式需在向导里贴 log_format 或正则)。
  • 日志明细空 → 宿主机日志文件权限、:ro 挂载、容器用户读权限;chmod 644 原日志试试。
  • 时间对不上 → 必须挂 /etc/localtime:ro,或设 TZ=Asia/Shanghai
  • PG 目录权限 → 首次启动 PG 初始化失败多因 pgdata 目录权限不对,建目录后 chmod 777 再起可避坑。
  • 想换 SQLite 老版本 → 用 likaia/nginxpulse 早期 tag,新版已弃用 SQLite。

6. 效果展示

相关推荐
智购科技智能售货柜1 小时前
自动售货机商品识别YOLO模型训练实战:从6万张图片到98%识别率的完整复盘~YH
运维·服务器·数据库·人工智能·redis·物联网·yolo
若无情我 纸小铭1 小时前
Nginx学习笔记(二) Nginx--connection&request
笔记·学习·nginx
xixingzhe21 小时前
net::ERR_INCOMPLETE_CHUNKED_ENCODING解决
nginx
X1A0RAN1 小时前
自动化流水线提效·宏观篇:5 大提效方向实战
运维·自动化
胖大和尚2 小时前
网页访问服务器,只有粘贴板可用
运维·服务器
zhang133830890752 小时前
CG-85D 水工大坝渗压监测振弦式传感器
运维·服务器·网络·人工智能·自动化
艾莉丝努力练剑2 小时前
Mac 远程桌面体验:6 个工具的 macOS 适配情况整理
linux·运维·服务器·macos·面试
酷可达拉斯3 小时前
Linux操作系统-tcpdump抓包定位网络问题实战
linux·运维·服务器·网络·tcpdump
Lonely 净土13 小时前
Rocky Linux 安装教程
linux·运维·服务器