+-
开源轻量级 Nginx 访问日志分析与可视化面板,提供实时统计、PV 过滤、IP 归属地与客户端解析。

nginxpulse

轻量级 Nginx 访问日志分析与可视化面板,提供实时统计、PV 过滤、IP 归属地与客户端解析。

Github地址

https://github.com/likaia/nginxpulse

开源轻量级 Nginx 访问日志分析与可视化面板,提供实时统计、PV 过滤、IP 归属地与客户端解析。

项目功能

  • 实时统计:对 Nginx 的访问日志进行实时统计分析,帮助用户快速了解当前网站的访问情况。

  • PV 过滤:可以根据设定的规则对页面浏览量进行过滤,例如排除特定 IP 地址或用户代理的访问记录,从而更准确地统计有效流量。

  • IP 归属地查询:通过本地数据库(ip2region)和远程 API(ip-api.com)相结合的方式,查询访问者的 IP 归属地信息,并在页面上显示,方便用户了解流量来源。

  • 客户端解析:对访问者的客户端信息(如浏览器类型、操作系统等)进行解析,帮助用户了解不同客户端的访问情况。

快速开始

1. Docker 部署
  • 单镜像部署:使用一个 Docker 镜像同时包含前端 Nginx 和后端服务。镜像内置 PostgreSQL 数据库,启动时会自动初始化数据库(如果未自备数据库)。必须挂载数据目录/app/var/nginxpulse_data/app/var/pgdata,否则容器会报错退出。

  • 一键启动命令

    docker run -d --name nginxpulse \
    -p 8088:8088 \
    -v ./docker_local/logs:/share/logs:ro \
    -v ./docker_local/nginxpulse_data:/app/var/nginxpulse_data \
    -v ./docker_local/pgdata:/app/var/pgdata \
    -v /etc/localtime:/etc/localtime:ro \
    magiccoders/nginxpulse:latest

  • 注意事项:需要确保宿主机的docker_local目录存在,并且文件权限设置正确,以便容器能够正常访问日志文件。如果使用配置文件方式,可以将configs/nginxpulse_config.json挂载到容器内的/app/configs/nginxpulse_config.json,若未提供配置文件或环境变量,首次启动会进入初始化配置向导。

2. Docker Compose 部署
  • 使用远程镜像:通过 Docker Compose 文件配置服务,使用 Docker Hub 上的远程镜像。

    services:
    nginxpulse:
    image:magiccoders/nginxpulse:latest
    container_name:local_nginxpulse
    ports:
    -"8088:8088"
    -"8089:8089"
    volumes:
    -./docker_local/logs:/share/logs
    -./docker_local/nginxpulse_data:/app/var/nginxpulse_data
    -./docker_local/pgdata:/app/var/pgdata
    -/etc/localtime:/etc/localtime
    restart:unless-stopped

  • 启动命令

    docker compose up -d

时区设置
  • 重要性:项目使用系统时区进行日志时间的解析与统计,因此需要确保运行环境的时区设置正确。

  • Docker/Docker Compose 部署

    • 推荐挂载宿主机的时区文件到容器内,例如-v /etc/localtime:/etc/localtime:ro(Linux 系统)。

    • 如果宿主机提供/etc/timezone文件,也可以额外挂载-v /etc/timezone:/etc/timezone:ro

    • 如果只想指定时区,可以通过设置环境变量TZ=Asia/Shanghai,但需要确保容器内有时区数据(例如安装了tzdata包或挂载了/usr/share/zoneinfo)。

  • 单体部署(单进程)

    • 默认使用当前系统的时区。

    • 可以通过环境变量临时指定时区,例如TZ=Asia/Shanghai ./nginxpulse

移动端访问
  • 入口地址http://<host>:8088/m

  • 页面功能:移动端仅提供“概览”“日报”“实时”“日志”四个页面。

  • 初始化要求:首次初始化必须在电脑端完成,移动端会提示用户在电脑上打开。

3. 手动构建(前端、后端)
  • 前端构建

    cdwebapp
    npm install
    npm run build

  • 移动端构建

    cdwebapp_mobile
    npm install
    npm run build

  • 后端构建

    go mod download
    go build -o bin/nginxpulse ./cmd/nginxpulse/main.go

  • 本地开发:运行./scripts/dev_local.sh脚本,启动本地开发环境,前端开发服务默认端口为 8088,并会将/api代理到http://127.0.0.1:8089。本地开发前需要准备好日志文件,放在var/log/目录下,或者确保configs/nginxpulse_config.json文件中的logPath配置指向正确的日志文件路径。

4. 单体部署(单进程)
  • 重要提示:版本大于 1.5.3 后,已彻底弃用 SQLite,单体部署必须自备 PostgreSQL 数据库,并配置DB_DSN(或在configs/nginxpulse_config.json文件中填写database.dsn)。

  • 下载与执行:从项目的 releases 页面下载对应平台的二进制文件,执行后会生成单体可执行文件,该文件已内置前端静态资源,启动后即可同时提供前后端服务。

    • 前端访问地址:http://localhost:8088

    • 后端 API 访问地址:http://localhost:8088/api/...

  • 配置方式

    • 方式 A:配置文件(默认)

    • 方式 B:环境变量注入(无需文件)

      CONFIG_JSON="$(cat /path/to/nginxpulse_config.json)"./nginxpulse

  • 在运行目录创建configs/文件夹。

  • configs/nginxpulse_config.json文件放入该目录。

  • 启动程序:./nginxpulse

  • 注意事项

    • 配置文件路径为相对路径./configs/nginxpulse_config.json,需要确保运行时的工作目录正确。