👉 这是一个或许对你有用 的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
-
《项目实战(视频)》:从书中学,往事中**"练"**
-
《互联网高频面试题》:面朝简历学习,春暖花开
-
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
-
《精进 Java 学习指南》:系统学习,互联网主流技术栈
-
《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目
国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构
RBAC权限、数据权限、SaaS多租户、商城 、支付、工作流、大屏报表、ERP、CRM 、AI大模型、IoT物联网等功能:
【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本
服务器跑着,Nginx 每天生成一堆访问日志,但大部分时候没人去看。等出问题了才翻出来逐行 grep、awk、tail -f,找个 IP 折腾半天。
nginxpulse 是一个轻量的 Nginx 访问日志分析面板------Docker 一条命令拉起来,自动解析日志,图表展示 PV/UV、IP 归属地、状态码分布、客户端占比。
nginxpulse Logo
为什么需要它
ELK 能力强但吃资源(内存至少几个 G),个人服务器扛不住。GoAccess 功能成熟但上手有门槛。Prometheus + Nginx Exporter 偏进程监控,对访问日志的分析维度有限。
nginxpulse 卡在中间位置:比 GoAccess 上手快,比 ELK 轻得多。适合不需要复杂日志管道、只想快速看清网站访问情况 的场景。
技术栈:Go(Gin) + Vue 3 + TypeScript + ECharts,数据库 PostgreSQL(1.5.3 后已从 SQLite 迁移),IP 归属地用 ip2region + ip-api.com。Docker 镜像内置 PostgreSQL,不用单独装。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
功能概览
PV / UV 统计 :首次启动解析全量历史日志入库,之后持续监听新日志。统计维度:总 PV、UV、QPS、响应时间分布。默认排除内网 IP。
IP 归属地 :先查本地 ip2region,查不到再请求 ip-api.com,结果缓存避免重复查询。页面偶尔显示"待解析"是正常的,后台任务还没跑完。
状态码分布 :2xx/3xx/4xx/5xx 占比一目了然。4xx 飙高 → 有人扫路径或资源链接挂了;5xx 高 → 应用层出问题。
客户端解析 :浏览器、操作系统、移动端/桌面端占比,个人站长可以指导移动端适配优先级。
实时流量 :当前请求实时滚动,适合压测时盯着看或发版时确认流量正常。
数据日报 :按天汇总,可对比不同日期的访问量变化。
nginxpulse 面板概览
nginxpulse 面板详情
移动端有 /m 入口,支持概览、日报、实时、日志四个页面。但首次初始化必须在电脑上完成。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
部署方式
Docker(最快)
go
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 ./docker_local/configs:/app/configs \
-v /etc/localtime:/etc/localtime:ro \
magiccoders/nginxpulse:latest
| 挂载路径 | 用途 |
|---|---|
/share/logs |
日志目录(只读) |
/app/var/nginxpulse_data |
应用数据(必须挂载) |
/app/var/pgdata |
PostgreSQL 数据(必须挂载) |
/app/configs |
配置文件持久化 |
/etc/localtime |
同步宿主机时区 |
启动后访问 http://IP:8088。时区一定要设置 ,否则日志时间解析偏差,统计数据全乱。
Docker Compose
go
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
-./docker_local/configs:/app/configs
-/etc/localtime:/etc/localtime
stop_grace_period:90s
restart:unless-stopped
stop_grace_period: 90s 不能省------内置 PostgreSQL 关闭时需要时间落盘,不给够会导致下次启动走恢复流程。
go
docker compose up -d
单体二进制
从 GitHub Releases 下载,直接运行。1.5.3 后需自备 PostgreSQL,在配置文件里填 database.dsn。
go
TZ=Asia/Shanghai ./nginxpulse
多站点和压缩日志
一台服务器跑多个站点时,把日志目录整体挂进去,配置里分别指定:
go
[
{"name": "站点A", "logPath": "/share/log/nginx/access-site-a.log", "domains": ["a.example.com"]},
{"name": "站点B", "logPath": "/share/log/nginx/access-site-b.log", "domains": ["b.example.com"]}
]
压缩日志直接支持,logPath 可指向 .gz 文件或通配符:
go
{"logPath": "/share/log/nginx/access-*.log.gz"}
历史日志不用解压,直接拿来用。
权限踩坑
nginxpulse 默认以非 root 用户运行。容器内能否读日志、写数据,取决于宿主机目录权限。
go
# 查看 UID/GID
ls -n /path/to/logs /path/to/nginxpulse_data
# 启动时传入
docker run ... -e PUID=1000 -e PGID=1000 ...
# 确保权限
chown -R 1000:1000 /path/to/nginxpulse_data /path/to/pgdata
chmod -R u+rx /path/to/logs
RHEL/CentOS/Fedora 开了 SELinux 的,volume 后面加 :z 或 :Z:
go
-v /path/to/logs:/var/log/nginx:ro,Z
不要 chmod 777 ------只能临时排查用,不适合生产。
常见问题速查
| 问题 | 原因 | 解决 |
|---|---|---|
| 日志明细没内容 | 权限问题 | 检查容器内用户对日志文件的读权限 |
| PV/UV 一直是 0 | 默认排除内网 IP | 把 PV_EXCLUDE_IPS 设为空,重新解析 |
| 日志时间不对 | 时区未同步 | 挂载 /etc/localtime,重新解析 |
| 数据会一直积累吗 | 有自动清理 | 按 logRetentionDays 清理,默认 30 天 |
和 GoAccess / ELK 怎么选
| 工具 | 优势 | 不足 |
|---|---|---|
| nginxpulse | Docker 一键部署、图表直观、资源占用低 | 功能比 ELK 少 |
| GoAccess | 成熟稳定、命令行高效 | 上手有门槛、Web 界面较朴素 |
| ELK | 能力最强、可查询任意维度 | 资源消耗极高、部署运维复杂 |
| Prometheus + Grafana | 监控生态完善 | 偏进程监控,日志分析维度有限 |
开源地址:https://github.com/likaia/nginxpulse
文档站点:https://nginx-pulse-docs.kaisir.cn/
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,"长按 "或"扫描"下方二维码噢:

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。





go
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)