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

NginxPulse

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

图片[1] - 开源轻量级 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. 手动构建(前端、后端)

  • 前端构建

    cd webapp npm install npm run build

  • 移动端构建

    cd webapp_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

  1. 在运行目录创建  configs/  文件夹。
  2. 将  configs/nginxpulse_config.json  文件放入该目录。
  3. 启动程序:./nginxpulse
  • 注意事项
  • 配置文件路径为相对路径  ./configs/nginxpulse_config.json,需要确保运行时的工作目录正确。

使用项目

©版权声明
THE END
喜欢就支持一下吧
点赞0 赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容