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

查看 4|回复 0
作者:bear330   
大家好,之前有在版上介绍过我自己写的 CLI 传档工具 ffl 上一篇传送门。
这阵子在维运时遇到一个痛点:「想分析 Production 容器里的 Nginx Log ,但不想在 Server 上装 GoAccess ,也不想把几百 MB 的 Log 载回来占空间。」
通常大家会用 scp 下载,或者搞复杂的 SSH Tunnel 。但我个人还是感觉有点麻烦,尤其是档案在 Container 内 或属于 Root 权限 时,SFTP/SCP 很难直接一把抓出来。
于是就有了这个玩法的 Demo 。👇
📺 实际效果 (Log 串流分析)

(影片示范的是将远端 160MB 的 Log 直接串流到本地 GoAccess 进行即时分析)
🛠️ 这个方案解决了什么?
[ol]

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

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

  • 穿透内网
    如果你的 Server 在层层 NAT 后面,或者你只是想把 Log 分享给没有 SSH 权限的同事看,这个连结丢给他,浏览器打开也能收(会走 P2P 传输)。
    [/ol]
    💻 怎么做到的?
    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 异地备份),有什么脑洞大开的用法也欢迎交流!
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部