NginxPulse 开源了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
MagicCoder

NginxPulse 开源了

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

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

    -v ./nginx_data/logs/all/access.log:/var/log/nginx/access.log:ro \
    MagicCoder
        22
    MagicCoder  
    OP
       Jan 13
    @54xavier 我那里直接挂载 nginx 目录写错了
    SkyHive
        23
    SkyHive  
       Jan 13
    能不能支持批量导入日志文件,因为我是把 nginx 当 lb 来用了,希望可以直接挂载 /var/log/nginx 这样的目录,日志文件的命名规则都是 ${domain_name}.access.log ${domain_name}.error.log 这样的
    perfectlife
        24
    perfectlife  
       Jan 13 via Android
    能把日志格式拆出来,做成可以自定义的就完美了
    whitewash
        25
    whitewash  
       Jan 13
    点进来前以为 nginx plus 开源了
    jianqiao031313
        26
    jianqiao031313  
       Jan 13
    赞一个,要是 WEBSITES 支持配置文件就更好了,比如直接读个 json 啥的,后面修改完配置文件直接重启 docker 就好了~
    谢谢 op 开源~
    54xavier
        27
    54xavier  
       Jan 13
    @MagicCoder #21 不能挂载到 docker 内部 /var/log/nginx ,docker 内部也是用的 nginx ,刚好内部 nginx 也是这个路径,内部 nginx 读写 access.log 的时候会报错。
    DejavuMoe
        28
    DejavuMoe  
       Jan 13
    可以直接读取 Nginx 日志目录 /var/nginx/log 下的所有日志吗?手动单个站点挂载太麻烦了。
    颜值很高,感谢开源
    Astralume
        29
    Astralume  
       Jan 13
    @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  
       Jan 13
    WEBSITES 的配置是否考虑 logPath 支持列表或者正则表达,因为很多时候某个 Domain 的日志都会有 xxx.access.log 和 xxx.error.log
    ruanimal
        31
    ruanimal  
       Jan 13   2
    @Aruforce 虽然英文不好,但是敏感肌呢
    54xavier
        32
    54xavier  
       Jan 13
    还有一个问题,没有账号密码,存在一定的泄露问题,我暂时用 1panel 的密码访问解决了
    liuliuliuliu
        33
    liuliuliuliu  
    PRO
       Jan 13
    不错,但是有点不满足我的需求,拿来抄一份自用吧
    MagicCoder
        34
    MagicCoder  
    OP
       Jan 13
    @jianqiao031313 支持 json 的,容器里的 configs/nginxpulse_config.json 就是所有的配置,你可以挂载到主机,直接改这个 json 文件也是可以的
    MagicCoder
        35
    MagicCoder  
    OP
       Jan 13
    @54xavier 这个鉴权问题就不在这个项目做了 专事专用,不做那么高的复杂度
    MagicCoder
        36
    MagicCoder  
    OP
       Jan 13
    @DejavuMoe 抱歉,这里我文档没写清楚,实际是挂载对应的.log 文件的,在 websites 里进行声明,文档已经更新了,你再看看
    MagicCoder
        37
    MagicCoder  
    OP
       Jan 13
    @liuliuliuliu 可以说下你的需求,我看看能不能通过配置的方式来支持
    MagicCoder
        38
    MagicCoder  
    OP
       Jan 13
    @SkyHive 支持的,文档已经更新了,可以看下 多个日志文件如何挂载 这个章节的内容
    MagicCoder
        39
    MagicCoder  
    OP
       Jan 13
    @perfectlife 可以自定义的,文档已更新,WEBSITES 就是干这个事儿的,日志文件随意指定
    MagicCoder
        40
    MagicCoder  
    OP
       Jan 13
    @54xavier 嗯嗯 这个问题是我文档写错了,已更正。
    MagicCoder
        41
    MagicCoder  
    OP
       Jan 13
    @DejavuMoe 支持的,文档已更新,详见 多个日志文件如何挂载 章节
    louisxxx
        42
    louisxxx  
       Jan 13
    适合没能力折腾 ELK 的
    mylara
        43
    strong>mylara  
       Jan 14
    @whitewash 一样
    SkyHive
        44
    SkyHive  
       Jan 14
    @MagicCoder #38 OK ,回头试试
    pota
        45
    pota  
       Jan 14
    我司在实际过程中发现 360 蜘蛛和 bing 蜘蛛会存在无蜘蛛标识的情况,尤其是 360 蜘蛛,经常变 ip 段,但是无头,建议使用官方页面每日更新蜘蛛段 https://www.so.com/help/spider_ip.html 进行判断,对于 bing 蜘蛛可以使用 https://www.bing.com/toolbox/bingbot.json 内容作为标识。百度蜘蛛不说了,目前没有官方发布页,只能按 UA 判断了
    honus
        46
    honus  
       Jan 14
    支持 nginx proxy manager 压缩日志解析不
    MagicCoder
        47
    MagicCoder  
    OP
       Jan 14
    @honus 日志格式满足就可以
    MagicCoder
        48
    MagicCoder  
    OP
       Jan 14
    @pota OK 我看看
    54xavier
        49
    54xavier  
       Jan 14
    自从用了这个,发现每天访问自己网站的都是蜘蛛,以及零星的莫名其妙的访客
    MagicCoder
        50
    MagicCoder  
    OP
       Jan 15
    演示站点已部署: https://nginx-pulse.kaisir.cn/
    itgoyo
        51
    itgoyo  
       Jan 15
    好东西
    Dreamful
        52
    Dreamful  
       Jan 15
    大佬,1panel 可以直接用容器安装吗?
    MagicCoder
        53
    MagicCoder  
    OP
       Jan 15
    @Dreamful 可以的
    SilentBlade
        54
    SilentBlade  
       Jan 16
    @MagicCoder #39 说的是日志格式解析自定义,我看文档上是要改源码吧
    MagicCoder
        55
    MagicCoder  
    OP
       Jan 16
    @mulychou 对,现在是要改源码,我正在把它改成可配置式
    MagicCoder
        56
    MagicCoder  
    OP
       Jan 17
    @54xavier 密钥功能加好了,你拉取下最新的镜像。加了个 ACCESS_KEYS 参数,具体可以看下文档
    MagicCoder
        57
    MagicCoder  
    OP
       Jan 17
    @Astralume 这个支持了, 用 * 来代替
    chenplum
        58
    chenplum  
       Jan 17
    能否支持下 arm64
    MagicCoder
        59
    MagicCoder  
    OP
       Jan 17
    @chenplum 应该是支持的吧
    MagicCoder
        60
    MagicCoder  
    OP
       Jan 18
    @chenplum 好了,现在支持 arm64 了。https://v2ex.com/t/1186595
    @a4526047
    About     Help     Advertise     Blog     API     FAQ     Solana     1579 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 162ms UTC 16:22 PVG 00:22 LAX 09:22 JFK 12:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86