V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MagicCoder
V2EX  ›  程序员

NginxPulse 开源了

  •  
  •   MagicCoder · 1 天前 · 3215 次点击

    前言

    上周写了个nginx 日志分析系统,这几天花了点时间把代码整理了下,现已开源。

    欢迎各位有需要的开发者自取。

    项目地址

    demo-img-1.png

    demo-img-2.png

    写在最后

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

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

    49 条回复    2026-01-14 17:21:14 +08:00
    rimworld
        1
    rimworld  
       1 天前
    颜值很棒,谢谢开源喵
    Aruforce
        2
    Aruforce  
       1 天前 via Android   ❤️ 1
    蹭 plus 的名干啥…
    cnrting
        3
    cnrting  
       1 天前 via iPhone
    骂得很难听
    jiangzm
        4
    jiangzm  
       1 天前
    应该和 nginx proxy manager 结合下比较好
    MagicCoder
        5
    MagicCoder  
    OP
       1 天前
    @Aruforce 啊? Pulse 是脉搏、心跳的意思😅 我取这个名的寓意是:Nginx 的心跳与生命监测系统
    J0hanD
        6
    J0hanD  
       1 天前 via iPhone
    感谢大佬开源
    MagicCoder
        7
    MagicCoder  
    OP
       1 天前
    @jiangzm 😂 我比较偏向于各干各个的,分散开比较好
    honkew
        8
    honkew  
       1 天前
    需要对蜘蛛区分
    WizardLeo
        9
    WizardLeo  
       1 天前
    感谢大佬开源!
    这个项目可以接入多个 nginx 吗?比如把数个 nginx 的日志通过 rclone 之类的方式聚合到一个目录下以文件夹区分开这样。
    clarkyu
        10
    clarkyu  
       1 天前
    感谢开源, UI 很不错
    a4526047
        11
    a4526047  
       1 天前
    用的甲骨文,下载镜像:no matching manifest for linux/arm64/v8 in the manifest list entries
    MagicCoder
        12
    MagicCoder  
    OP
       1 天前
    @WizardLeo 支持的
    MagicCoder
        13
    MagicCoder  
    OP
       1 天前
    @a4526047 😂 是不是镜像源设置到其他地方去了
    MagicCoder
        14
    MagicCoder  
    OP
       1 天前
    @honkew 现在有区分蜘蛛
    zepc007
        15
    zepc007  
       1 天前
    @Aruforce ???
    a1274598858
        16
    a1274598858  
       1 天前
    不会 go ,大佬能否构建个 releases😁
    dianso
        17
    dianso  
       1 天前
    我 nginx 用的官方镜像,docker compose 运行,这如何使用啊
    MagicCoder
        18
    MagicCoder  
    OP
       1 天前
    @dianso 这个跟镜像没关系,只需要传入 nginx 的日志文件路径就可以了
    MagicCoder
        19
    MagicCoder  
    OP
       1 天前
    @a1274598858 可以,我晚点写下自动构建脚本,放 GitHub
    54xavier
        20
    54xavier  
       1 天前

    1panel 面板通过 OpenResty 配置的网站,volume 配置有点儿头疼
    MagicCoder
        21
    MagicCoder  
    OP
       1 天前
    @54xavier 我文档写的有点问题,已经更正过来了。需要在 websites 里加每个网站的访问日志(.log 文件),声明好位置,然后再把本机的日志文件挂载进去。

    -v ./nginx_data/logs/all/access.log:/var/log/nginx/access.log:ro \
    MagicCoder
        22
    MagicCoder  
    OP
       1 天前
    @54xavier 我那里直接挂载 nginx 目录写错了😂
    SkyHive
        23
    SkyHive  
       1 天前
    能不能支持批量导入日志文件,因为我是把 nginx 当 lb 来用了,希望可以直接挂载 /var/log/nginx 这样的目录,日志文件的命名规则都是 ${domain_name}.access.log ${domain_name}.error.log 这样的
    perfectlife
        24
    perfectlife  
       1 天前 via Android
    能把日志格式拆出来,做成可以自定义的就完美了
    whitewash
        25
    whitewash  
       1 天前
    点进来前以为 nginx plus 开源了
    jianqiao031313
        26
    jianqiao031313  
       1 天前
    赞一个,要是 WEBSITES 支持配置文件就更好了,比如直接读个 json 啥的,后面修改完配置文件直接重启 docker 就好了~
    谢谢 op 开源~
    54xavier
        27
    54xavier  
       1 天前
    @MagicCoder #21 不能挂载到 docker 内部 /var/log/nginx ,docker 内部也是用的 nginx ,刚好内部 nginx 也是这个路径,内部 nginx 读写 access.log 的时候会报错。
    DejavuMoe
        28
    DejavuMoe  
       1 天前
    可以直接读取 Nginx 日志目录 /var/nginx/log 下的所有日志吗?手动单个站点挂载太麻烦了。
    颜值很高,感谢开源
    Astralume
        29
    Astralume  
       23 小时 56 分钟前
    @54xavier #27

    ```
    docker run -d --name nginxpulse \
    -p 8088:8088 \
    -p 8089:8089 \
    -e WEBSITES='[{"name":"主站","logPath":"/out_nginx_log/xxxxxxxx.log","domains":["example.com","www.example.com"]}]' \
    -e SERVER_PORT=":8089" \
    -v /out_side_nginx_data_logs:/out_nginx_log:ro \
    -v "$(pwd)/var/nginxpulse_data:/app/var/nginxpulse_data" \
    magiccoders/nginxpulse:latest
    ```

    这个写法容易理解些
    Astralume
        30
    Astralume  
       23 小时 50 分钟前
    WEBSITES 的配置是否考虑 logPath 支持列表或者正则表达,因为很多时候某个 Domain 的日志都会有 xxx.access.log 和 xxx.error.log
    ruanimal
        31
    ruanimal  
       23 小时 45 分钟前
    @Aruforce 虽然英文不好,但是敏感肌呢
    54xavier
        32
    54xavier  
       23 小时 42 分钟前
    还有一个问题,没有账号密码,存在一定的泄露问题,我暂时用 1panel 的密码访问解决了
    liuliuliuliu
        33
    liuliuliuliu  
    PRO
       23 小时 35 分钟前
    不错,但是有点不满足我的需求,拿来抄一份自用吧
    MagicCoder
        34
    MagicCoder  
    OP
       23 小时 22 分钟前
    @jianqiao031313 支持 json 的,容器里的 configs/nginxpulse_config.json 就是所有的配置,你可以挂载到主机,直接改这个 json 文件也是可以的
    MagicCoder
        35
    MagicCoder  
    OP
       23 小时 21 分钟前
    @54xavier 这个鉴权问题就不在这个项目做了🤣 专事专用,不做那么高的复杂度
    MagicCoder
        36
    MagicCoder  
    OP
       23 小时 17 分钟前
    @DejavuMoe 抱歉,这里我文档没写清楚,实际是挂载对应的.log 文件的,在 websites 里进行声明,文档已经更新了,你再看看
    MagicCoder
        37
    MagicCoder  
    OP
       22 小时 51 分钟前
    @liuliuliuliu 🤣 可以说下你的需求,我看看能不能通过配置的方式来支持
    MagicCoder
        38
    MagicCoder  
    OP
       22 小时 50 分钟前
    @SkyHive 支持的,文档已经更新了,可以看下 多个日志文件如何挂载 这个章节的内容
    MagicCoder
        39
    MagicCoder  
    OP
       22 小时 49 分钟前
    @perfectlife 可以自定义的,文档已更新,WEBSITES 就是干这个事儿的,日志文件随意指定
    MagicCoder
        40
    MagicCoder  
    OP
       22 小时 48 分钟前
    @54xavier 嗯嗯 这个问题是我文档写错了,已更正。
    MagicCoder
        41
    MagicCoder  
    OP
       22 小时 47 分钟前
    @DejavuMoe 支持的,文档已更新,详见 多个日志文件如何挂载 章节
    louisxxx
        42
    louisxxx  
       22 小时 39 分钟前
    适合没能力折腾 ELK 的
    gearfox
        43
    gearfox  
       10 小时 58 分钟前
    @whitewash 一样
    SkyHive
        44
    SkyHive  
       10 小时 38 分钟前
    @MagicCoder #38 OK ,回头试试
    pota
        45
    pota  
       9 小时 58 分钟前
    我司在实际过程中发现 360 蜘蛛和 bing 蜘蛛会存在无蜘蛛标识的情况,尤其是 360 蜘蛛,经常变 ip 段,但是无头,建议使用官方页面每日更新蜘蛛段 https://www.so.com/help/spider_ip.html 进行判断,对于 bing 蜘蛛可以使用 https://www.bing.com/toolbox/bingbot.json 内容作为标识。百度蜘蛛不说了,目前没有官方发布页,只能按 UA 判断了
    honus
        46
    honus  
       4 小时 30 分钟前
    支持 nginx proxy manager 压缩日志解析不
    MagicCoder
        47
    MagicCoder  
    OP
       4 小时 22 分钟前
    @honus 日志格式满足就可以
    MagicCoder
        48
    MagicCoder  
    OP
       4 小时 22 分钟前
    @pota OK 我看看
    54xavier
        49
    54xavier  
       2 小时 55 分钟前
    自从用了这个,发现每天访问自己网站的都是蜘蛛,以及零星的莫名其妙的访客
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3254 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:16 · PVG 20:16 · LAX 04:16 · JFK 07:16
    ♥ Do have faith in what you're doing.