[开源]一款轻量级 Nginx 访问日志分析与可视化面板,提供实时统计

开源系统流程管理
2026-06-28 06:40 0 次浏览 • 0 次下载 0KB
[开源]一款轻量级 Nginx 访问日志分析与可视化面板,提供实时统计

一、开源项目简介

图片

NginxPulse

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

二、开源协议

使用MIT开源协议

三、界面展示

图片
图片

四、功能概述

IP 归属地查询策略

  • 快速过滤
    空值/本地/回环地址返回“本地”,内网地址返回“内网/本地网络”。
  • 缓存优先
    内存缓存命中直接返回(最多缓存 50,000 条)。
  • 远程优先
    调用 ip-api.com/batch 批量查询,超时 1.2s,单批最多 100 个。
  • 本地兜底
    远程失败或结果为“未知”时,IPv4 使用内置 ip2region 数据库本地查询(50ms 超时)。
  • IPv6 处理
    仅走远程查询,远程失败则返回“未知”。

本地数据库 ip2region.xdb 内嵌在二进制中,首次启动会自动解压到./var/nginxpulse_data/ip2region.xdb,并尝试加载向量索引提升查询性能。

本项目会访问外网 IP 归属地 API(ip-api.com),部署环境需放行该域名的出站访问。

五、技术选型

项目开发技术栈

  • 后端
    Go 1.23.x · Gin · Logrus
  • 数据
    SQLite (modernc.org/sqlite)
  • IP 归属地
    ip2region(本地库) + ip-api.com(远程批量)
  • 前端
    Vue 3 · Vite · TypeScript · PrimeVue · ECharts/Chart.js · Scss
  • 容器
    Docker / Docker Compose · Nginx(前端静态部署)

二次开发注意事项

环境依赖

  • Go 1.23.x(与 go.mod 保持一致)
  • Node.js 20+ / npm
  • Docker(可选,用于容器化)

如何使用项目

1) Docker

详细内容请查看 README.md 文档

2) Docker Compose

详细内容请查看 README.md 文档

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

前端构建:

cd webapp
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 指向对应文件)。

目录结构与主要文件

.
├── cmd/
│   └── nginxpulse/
│       └── main.go                 # 程序入口
├── internal/                       # 核心逻辑(解析、统计、存储、API)
│   ├── app/
│   │   └── app.go                  # 初始化、依赖装配、任务调度
│   ├── analytics/                  # 统计口径与聚合
│   ├── enrich/
│   │   ├── ip_geo.go               # IP 归属地(远程+本地)与缓存
│   │   └── pv_filter.go            # PV 过滤规则
│   ├── ingest/
│   │   └── log_parser.go           # 日志扫描、解析与入库
│   ├── server/
│   │   └── http.go                 # HTTP 服务与中间件
│   ├── store/
│   │   └── repository.go           # SQLite 结构与写入
│   └── web/
│       └── handler.go              # API 路由
├── webapp/
│   └── src/
│       └── main.ts                 # 前端入口
├── configs/
│   ├── nginxpulse_config.json      # 核心配置入口
│   └── nginx_frontend.conf         # 内置 Nginx 配置
├── scripts/
│   └── dev_local.sh                # 本地一键启动
├── var/                            # 数据目录(运行时生成/挂载)
├── Dockerfile
└── docker-compose.yml