V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
bear330
V2EX  ›  分享创造

[分享] 拋棄 SCP:我用單一 Binary (APE) 透過 WebRTC 將遠端 Nginx Log 串流到本地 GoAccess (零依賴)

  •  
  •   bear330 · 5 天前 · 697 次点击

    大家好,之前有在版上介绍过我自己写的 CLI 传档工具 ffl 上一篇传送门

    这阵子在维运时遇到一个痛点:「想分析 Production 容器里的 Nginx Log ,但不想在 Server 上装 GoAccess ,也不想把几百 MB 的 Log 载回来占空间。」

    通常大家会用 scp 下载,或者搞复杂的 SSH Tunnel 。但我个人还是感觉有点麻烦,尤其是档案在 Container 内 或属于 Root 权限 时,SFTP/SCP 很难直接一把抓出来。

    于是就有了这个玩法的 Demo 。👇

    📺 实际效果 (Log 串流分析)

    Demo (影片示范的是将远端 160MB 的 Log 直接串流到本地 GoAccess 进行即时分析)

    🛠️ 这个方案解决了什么?

    1. Server 端零洁癖 (Zero Dependencies) 因为是用 APE 封装,不用装 Python 、不用装 Node ,甚至不用管 OS 版本( Alpine/Debian/CentOS/x86/ARM 通吃)。直接 curl 下来就能跑,跑完就删,不弄脏环境。

    2. 即时且节省空间 资料不落地。流程变成:Remote Stream -> Local Pipe ,流量走完就结束了,不会占用本地硬碟。当然你想存下来也可以,连结丢进浏览器下载走的是 WebRTC P2P ,速度也是非常快。

    3. 穿透内网 如果你的 Server 在层层 NAT 后面,或者你只是想把 Log 分享给没有 SSH 权限的同事看,这个连结丢给他,浏览器打开也能收(会走 P2P 传输)。

    💻 怎么做到的?

    1. 远端 (Producer): 把 Log 吐出来,Pipe 给 ffl:

    # 下载 (APE 格式,单一 binary)
    curl -fL [https://fastfilelink.com/ffl.com]( https://fastfilelink.com/ffl.com) -o ffl.com && chmod +x ffl.com
    
    # 把档案变连结 (资料夹也可)
    ./ffl.com /var/log/nginx/access.log
    

    2. 本地 (Consumer): 拿到连结后,用 curl 接住并喂给 GoAccess:

    curl -sN [LINK] | goaccess - --log-format=COMBINED
    

    🔗 专案地址

    如果你也是 CLI / APE 爱好者,欢迎来 GitHub 看看,也欢迎 Star 或 PR ! 👉 https://github.com/nuwainfo/ffl

    目前正在尝试更多 stdin 的玩法(例如 mysqldump 异地备份),有什么脑洞大开的用法也欢迎交流!

    3 条回复    2026-01-19 04:37:41 +08:00
    Need4more
        1
    Need4more  
       4 天前
    好奇怪的表达, [档案] 是文件的意思吗?
    bear330
        2
    bear330  
    OP
       4 天前
    真是不好意思, 其實我是台灣人, 我們都說檔案, 我下次注意要說文件 :) 謝謝提醒
    ztm0929
        3
    ztm0929  
       3 天前
    @bear330 其实没啥,港澳台、东南亚和大陆的中文本来就有点差异,按自己语言习惯来就好~
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5207 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:35 · PVG 17:35 · LAX 01:35 · JFK 04:35
    ♥ Do have faith in what you're doing.