大家好,我是 Java陈序员。
对于运维人员、站长来说,Nginx 日志是分析网站访问情况的核心,但逐行翻阅、手动统计 PV/UV、排查 IP 归属地的过程,耗时又费力。尤其是多站点部署时,不同日志文件切换、数据零散的问题,更是让人效率大打折扣。
今天,给大家推荐一款开源的轻量级 Nginx 日志分析可视化面板,告别逐行翻日志!
项目介绍nginxpulse —— 一款轻量级 Nginx 访问日志分析与可视化面板,提供实时统计、PV 过滤、IP 归属地与客户端解析。
功能特色:
轻量化部署:支持 Docker 部署,无需搭建复杂依赖环境,基于 Go 语言开发,后端高性能低消耗,搭配 SQLite 轻量化数据库,无需额外部署数据库服务多维度日志分析:支持同时挂载多个 Nginx 日志文件,自动统计 PV/UV、访问频次、请求状态码、客户端(浏览器/设备)、访问时段等维度数据智能 IP 解析:IP 归属地按地域分类展示,可快速定位异常访问 IP、高频访问区域灵活适配:支持适配非标准 Nginx 日志格式,只需调整解析规则配置,无需修改代码,还适配 Caddy 服务器日志解析,一站式搞定多类 Web 服务器日志分析技术栈:
后端:Go + SQLite + Ip2Region前端:Vue3 + Vite + TypeScript快速上手Docker 部署1、拉取镜像
docker pull magiccoders/nginxpulse:latest2、创建挂载目录
mkdir -p /data/software/nginxpulse3、运行容器
docker run -d --name nginxpulse \ -p 8088:8088 \ -p 8089:8089 \ -e WEBSITES='[{"name":"Java陈序员","logPath":"/share/log/nginx/access.log","domains":["chencoding.top","chencoding.top"]}]' \ -e ACCESS_KEYS='["key-1","key-2"]' \ -v /data/software/nginx/access.log:/share/log/nginx/access.log:ro \ -v /data/software/nginxpulse:/app/var/nginxpulse_data \ magiccoders/nginxpulse:latest参数说明:
8088:前端访问端口8088:后端访问端口-e WEBSITES:指定网站列表的 JSON 数组,字段:name、logPath、domains(可选)-e ACCESS_KEYS:访问密钥列表,为非空数组时,访问 UI 和 API 都需要提供密钥4、浏览器访问
http://{IP/域名}:8088Docker Compose 部署1、创建 docker-compose.yml 文件,并写入如下内容:
version: "3.8" services: nginxpulse: image: magiccoders/nginxpulse:latest container_name: nginxpulse ports: - "8088:8088" - "8089:8089" environment: WEBSITES: '[{"name":"Java陈序员","logPath":"/share/log/nginx/access.log","domains":["chencoding.top","chencoding.top"]}]' ACCESS_KEYS: '["key-1","key-2"]' volumes: - /data/software/nginx/access.log:/share/log/nginx/access.log:ro - /data/software/nginxpulse:/app/var/nginxpulse_data - /etc/localtime:/etc/localtime:ro restart: unless-stopped2、启动运行
docker compose up -d日志文件挂载多日志文件挂载WEBSITES 的值是个数组,参数对象中传入网站名、网址、日志路径。例如:
environment: WEBSITES: '[{"name":"网站1","logPath":"/share/log/nginx/access-site1.log","domains":["www.kaisir.cn","kaisir.cn"]}, {"name":"网站2","logPath":"/share/log/nginx/access-site2.log","domains":["home.kaisir.cn"]}]' volumes: - ./nginx_data/logs/site1/access.log:/share/log/nginx/access-site1.log:ro - ./nginx_data/logs/site2/access.log:/share/log/nginx/access-site2.log:ro日志目录挂载如果有很多个网站要分析,可以考虑将日志目录整体挂载进去,然后在 WEBSITES 里去指定具体的日志文件即可。例如:
environment: WEBSITES: '[{"name":"网站1","logPath":"/share/log/nginx/access-site1.log","domains":["www.kaisir.cn","kaisir.cn"]}, {"name":"网站2","logPath":"/share/log/nginx/access-site2.log","domains":["home.kaisir.cn"]}]' volumes: - ./nginx_data/logs:/share/log/nginx/压缩日志(.gz)挂载nginxpulse 还支持直接解析 .gz 压缩日志,logPath 可指向单个 .gz 文件或使用通配符。例如:
{"logPath": "/share/log/nginx/access-*.log.gz"}功能体验概况
数据日报
实时
访问明细
不管是个人站长、中小企业运维,还是个人开发,nginxpulse 都能帮你告别繁琐的日志分析,用最简单的方式掌握网站访问数据。快去试试吧~
项目地址:https://github.com/likaia/nginxpulse最后推荐的开源项目已经收录到 GitHub 项目,欢迎 Star:
https://github.com/chenyl8848/great-open-source-project或者访问网站,进行在线浏览:
https://chencoding.top:8090/#/大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!