• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MagicCoder
V2EX  ›  程序员

NginxPulse 开源了

  •  
  •   MagicCoder · Jan 13 · 7688 views
    This topic created in 293 days ago, the information mentioned may be changed or developed.

    前言

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

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

    项目地址

    demo-img-1.png

    demo-img-2.png

    写在最后

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

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

    Supplement 1  ·  Jan 15
    演示站点部署好了: https://nginx-pulse.kaisir.cn/
    Supplement 2  ·  Jan 16
    创了个交流群,有关此项目的优化与建议,欢迎大家进群交流。
    ![2a72784b60f9997c95dc52f2a69d9c8e]( https://resource.kaisir.cn/uploads/MarkDownImg/20260116/N2RRwf.jpg)
    Supplement 3  ·  Jan 16

    创了个交流群,有关此项目的优化与建议,欢迎大家进群交流。 2a72784b60f9997c95dc52f2a69d9c8e

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

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

    -v ./nginx_data/logs/all/access.log:/var/log/nginx/access.log:ro \
    MagicCoder
    MagicCoder
    OP
    Jan 13
    22
    @54xavier 我那里直接挂载 nginx 目录写错了😂
    SkyHive
    SkyHive
    Jan 13
    23
    能不能支持批量导入日志文件,因为我是把 nginx 当 lb 来用了,希望可以直接挂载 /var/log/nginx 这样的目录,日志文件的命名规则都是 ${domain_name}.access.log ${domain_name}.error.log 这样的
    perfectlife
    perfectlife
    Jan 13 via Android
    24
    能把日志格式拆出来,做成可以自定义的就完美了
    whitewash
    whitewash
    Jan 13
    25
    点进来前以为 nginx plus 开源了
    jianqiao031313
    26
    赞一个,要是 WEBSITES 支持配置文件就更好了,比如直接读个 json 啥的,后面修改完配置文件直接重启 docker 就好了~
    谢谢 op 开源~
    54xavier
    54xavier
    Jan 13
    27
    @MagicCoder #21 不能挂载到 docker 内部 /var/log/nginx ,docker 内部也是用的 nginx ,刚好内部 nginx 也是这个路径,内部 nginx 读写 access.log 的时候会报错。
    DejavuMoe
    DejavuMoe
    Jan 13
    28
    可以直接读取 Nginx 日志目录 /var/nginx/log 下的所有日志吗?手动单个站点挂载太麻烦了。
    颜值很高,感谢开源
    Astralume
    Astralume
    Jan 13
    29
    @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
    Astralume
    Jan 13
    30
    WEBSITES 的配置是否考虑 logPath 支持列表或者正则表达,因为很多时候某个 Domain 的日志都会有 xxx.access.log 和 xxx.error.log
    ruanimal
    ruanimal
    Jan 13❤️2
    31
    @Aruforce 虽然英文不好,但是敏感肌呢
    54xavier
    54xavier
    Jan 13
    32
    还有一个问题,没有账号密码,存在一定的泄露问题,我暂时用 1panel 的密码访问解决了
    liuliuliuliu
    33
    不错,但是有点不满足我的需求,拿来抄一份自用吧
    MagicCoder
    MagicCoder
    OP
    Jan 13
    34
    @jianqiao031313 支持 json 的,容器里的 configs/nginxpulse_config.json 就是所有的配置,你可以挂载到主机,直接改这个 json 文件也是可以的
    MagicCoder
    MagicCoder
    OP
    Jan 13
    35
    @54xavier 这个鉴权问题就不在这个项目做了🤣 专事专用,不做那么高的复杂度
    MagicCoder
    MagicCoder
    OP
    Jan 13
    36
    @DejavuMoe 抱歉,这里我文档没写清楚,实际是挂载对应的.log 文件的,在 websites 里进行声明,文档已经更新了,你再看看
    MagicCoder
    MagicCoder
    OP
    Jan 13
    37
    @liuliuliuliu 🤣 可以说下你的需求,我看看能不能通过配置的方式来支持
    MagicCoder
    MagicCoder
    OP
    Jan 13
    38
    @SkyHive 支持的,文档已经更新了,可以看下 多个日志文件如何挂载 这个章节的内容
    MagicCoder
    MagicCoder
    OP
    Jan 13
    39
    @perfectlife 可以自定义的,文档已更新,WEBSITES 就是干这个事儿的,日志文件随意指定
    MagicCoder
    MagicCoder
    OP
    Jan 13
    40
    @54xavier 嗯嗯 这个问题是我文档写错了,已更正。
    MagicCoder
    MagicCoder
    OP
    Jan 13
    41
    @DejavuMoe 支持的,文档已更新,详见 多个日志文件如何挂载 章节
    louisxxx
    louisxxx
    Jan 13
    42
    适合没能力折腾 ELK 的
    mylara
    mylara
    Jan 14
    43
    @whitewash 一样
    SkyHive
    SkyHive
    Jan 14
    44
    @MagicCoder #38 OK ,回头试试
    pota
    pota
    Jan 14
    45
    我司在实际过程中发现 360 蜘蛛和 bing 蜘蛛会存在无蜘蛛标识的情况,尤其是 360 蜘蛛,经常变 ip 段,但是无头,建议使用官方页面每日更新蜘蛛段 https://www.so.com/help/spider_ip.html 进行判断,对于 bing 蜘蛛可以使用 https://www.bing.com/toolbox/bingbot.json 内容作为标识。百度蜘蛛不说了,目前没有官方发布页,只能按 UA 判断了
    honus
    honus
    Jan 14
    46
    支持 nginx proxy manager 压缩日志解析不
    MagicCoder
    MagicCoder
    OP
    Jan 14
    47
    @honus 日志格式满足就可以
    MagicCoder
    MagicCoder
    OP
    Jan 14
    48
    @pota OK 我看看
    54xavier
    54xavier
    Jan 14
    49
    自从用了这个,发现每天访问自己网站的都是蜘蛛,以及零星的莫名其妙的访客
    MagicCoder
    MagicCoder
    OP
    Jan 15
    50
    演示站点已部署: https://nginx-pulse.kaisir.cn/
    itgoyo
    itgoyo
    Jan 15
    51
    好东西
    Dreamful
    Dreamful
    Jan 15
    52
    大佬,1panel 可以直接用容器安装吗?
    MagicCoder
    MagicCoder
    OP
    Jan 15
    53
    @Dreamful 可以的
    SilentBlade
    54
    @MagicCoder #39 说的是日志格式解析自定义,我看文档上是要改源码吧
    MagicCoder
    MagicCoder
    OP
    Jan 16
    55
    @mulychou 对,现在是要改源码,我正在把它改成可配置式
    MagicCoder
    MagicCoder
    OP
    Jan 17
    56
    @54xavier 密钥功能加好了,你拉取下最新的镜像。加了个 ACCESS_KEYS 参数,具体可以看下文档
    MagicCoder
    MagicCoder
    OP
    Jan 17
    57
    @Astralume 这个支持了, 用 * 来代替
    chenplum
    chenplum
    Jan 17
    58
    能否支持下 arm64
    MagicCoder
    MagicCoder
    OP
    Jan 17
    59
    @chenplum 应该是支持的吧🤣
    MagicCoder
    MagicCoder
    OP
    Jan 18
    60
    @chenplum 好了,现在支持 arm64 了。https://v2ex.com/t/1186595
    @a4526047
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1571 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 102ms · UTC 23:08 · PVG 07:08 · LAX 15:08 · JFK 18:08
    ♥ Do have faith in what you're doing.