惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
博客园_首页
罗磊的独立博客
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
Last Week in AI
Last Week in AI
D
DataBreaches.Net
Jina AI
Jina AI
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
D
Docker
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
H
Help Net Security
T
The Blog of Author Tim Ferriss

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 看到有公司考核 token 指标,很好奇大家上个月的 AI 账单是多少 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? 现在还有什么渠道可以稳定安全地使用 Claude 吗? 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? gemini cli 貌似挂了,一直返回 403 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 只有我一个人觉得 codex 不好用?
开发了一个 nginx 日志分析面板
MagicCoder · 2026-01-08 · via V2EX

前言

最近在优化网站访问链路的过程中,部署了一套 WAF 防火墙,它大部分功能都做的挺好,美中不足的地方就是针对于网站访客的相关功能需要付费( 3600 元/年)才能用。

付费是不可能付费的,找了一圈 nginx 日志分析的开源项目,大部分都做的挺简陋的,要么就是做的很重,需要部署其他服务。

既然找不到合适的,那就自己动手写一个吧!

如果看不到图片的话,直接访问我个人网站上发布的。https://www.kaisir.cn/post/186

实现效果

做了 4 个模块对日志数据进行分析。

  • 访问概况
  • 数据日报
  • 实时访问
  • 访问明细

image-20260108124900609

访问概况

概况模块中,做了 8 个维度的数据分析。

核心指标

在这个维度中,针对 http 状态码、浏览量、访客数、会话数做了更细致的划分。

image-20260108125517344

每一个划分中,在详情面板里,都可以看到这个访客在什么时间做了什么事情。

image-20260108125954027

image-20260108130323366

image-20260108130405011

image-20260108130452437

趋势分析 & 新老访客

这一部分可以看到每天的访问趋势以及当天与前一天的新老访客占比。

image-20260108130725966

来路、受访页、入口页

这部分可以看到访客的来源,以及每个路径的访问次数。

image-20260108131048943

地域 & 终端设备

这部分可以看到每个省份的访问情况以及访问设备的分布情况。

image-20260108131213706

数据日报

在这个模块中,可以看到每天的浏览量、访客数、平均访问时长等信息。

image-20260108134815067

image-20260108140538356

实时访问

在这个模块里,可以查看最近 5/15/30 分钟内的访问情况

image-20260108141207205

访问明细

这个模块就以表格的形式展示每一条日志。

image-20260108141436301

如何使用

为了方便使用,我已经将这个项目打包成镜像发布到 dockerhub 上了,镜像名为magiccoders/nginxpulse,可以通过 docker 的形式使用,也可以通过 docker compose 的形式使用。

需要传入的参数:

  • WEBSITES 它的值是个数组,一个对象就是一个网站,需要传入网站名、日志路径、网址(或者内网 ip ,主要用于站内/站外的区分)
  • ports 端口映射,容器内暴露出来的端口是 8088
  • volumes 文件挂载,这里需要挂载:日志文件、容器内产生的数据文件、时区

此处我以 docker compose 的形式举例:

version: "3"
services:
  nginxpulse:
    image: magiccoders/nginxpulse:latest
    container_name: local_nginxpulse
    ports:
      - "9200:8088"
    environment:
      WEBSITES: '[{"name":"神奇的程序员","logPath":"/var/log/nginx/access.log","domains":["kaisir.cn","www.kaisir.cn"]}]' #domains 用于“来源( referer )统计”的站内/站外分类
      PV_EXCLUDE_IPS: '["127.0.0.1", "::1", "10.10.0.1", "192.168.30.21"]' #pv 统计时需要排除的 ip
    volumes:
      - ./nginx_data/logs/all/access.log:/var/log/nginx/access.log
      - ./nginxpulse_data:/app/nginxpulse_data
      - /etc/localtime:/etc/localtime
    restart: unless-stopped

写在最后

至此,文章就分享完毕了。

我是神奇的程序员,一位前端开发工程师。

如果你对我感兴趣,请移步我的个人网站,进一步了解。