站点图标 高效码农:前沿AI、IT技术与开发者分享

Gonzo:命令行日志分析神器,故障排查竟像追剧般轻松!

在命令行里看日志:Gonzo 让排查故障像追剧一样轻松


为什么写这篇文章?

“线上又报警了,日志在刷,我却找不到重点。”
如果你也遇到过同样的场景,这篇文章就是写给你的。
Gonzo 是一个用 Go 写的终端日志分析工具,把枯燥的 tail -f 变成了可交互的“日志仪表盘”。读完本文,你会知道它能做什么、不能做什么、怎么装、怎么用,以及遇到问题时该按哪个键。


1. Gonzo 是什么?一句话先讲清楚

Gonzo = 实时日志流 + 彩色图表 + AI 提示 + 类 k9s 按键习惯
它运行在终端里,不依赖浏览器,也不需要 ELK 那一套重量级全家桶。


2. 核心能力速览

能力 一句话解释 场景举例
实时流式处理 像 tail -f 一样实时,但多了图表 kubectl logs -f 直接接 Gonzo
多格式识别 JSON、logfmt、纯文本自动解析 Java、Go、Nginx 日志混着看
交互式过滤 输入正则立即高亮 只看 ERROR 且含有 “timeout”
AI 洞察 自动告诉你哪里不对劲 突然大量 5xx,AI 提示“可能是 DB 连接超时”
OTLP 接收 充当 OpenTelemetry 的日志接收端 把 OTel Collector 的日志直接导进来
键盘+鼠标 Vim 键位,支持滚轮和点击 左手键盘右手鼠标都能用

3. 安装:4 条命令任选其一

方式 命令 适合人群
Go 官方工具链 go install github.com/control-theory/gonzo/cmd/gonzo@latest 已配好 Go 环境
Homebrew brew tap control-theory/gonzo && brew install gonzo macOS / Linuxbrew
二进制包 releases 页面 下载对应平台 公司网络限制外网
Nix nix run github:control-theory/gonzo NixOS 或已用 Nix

验证是否成功

gonzo version

出现版本号即可继续下一步。


4. 10 个日常用法示例

4.1 最常见的本地日志

# 单文件
gonzo -f application.log

# 同时看多文件
gonzo -f app.log -f error.log -f debug.log

# 用通配符
gonzo -f "/var/log/*.log"

4.2 实时追踪

gonzo -f /var/log/app.log --follow

效果等价于 tail -f,但多了实时图表。

4.3 Kubernetes 场景

kubectl logs -f deployment/my-app | gonzo

一行命令,日志直接可视化。

4.4 Docker 场景

docker logs -f my-container 2>&1 | gonzo

把容器标准错误也一起接进来。

4.5 作为 OTLP 接收端

先启动 Gonzo:

gonzo --otlp-enabled

再配置 OTel Collector:

exporters:
  otlp/gonzo_grpc:
    endpoint: localhost:4317
    tls:
      insecure: true

日志就自动进来了。

4.6 AI 分析(可选)

export OPENAI_API_KEY=sk-your-key
gonzo -f logs.json --ai-model="gpt-4"

没有外网也能跑本地模型(LM Studio / Ollama):

export OPENAI_API_KEY="ollama"
export OPENAI_API_BASE="http://localhost:11434"
gonzo -f logs.json

5. 键盘导航:3 分钟就能上手

目标 操作
切换面板 Tab / Shift+Tab
暂停整屏 空格
进全屏日志 f
搜索内容 / 然后输入正则
查看某条日志详情 上下键选中 + Enter
退出任何界面 q 或 Ctrl+C

小贴士:在任何界面按 ? 会弹出完整帮助。


6. 界面元素拆解

  1. 主面板:2×2 网格

    • 日志列表
    • 词频图
    • 时间序列
    • 严重度分布
  2. 全屏日志:按 f 进入,滚轮翻页,支持 Home / End 跳头尾。

  3. Counts 分析弹窗:
    按 Enter 进入,60 分钟热力图 + 各等级 Top3 模式 + 服务分布。


7. 配置文件:一次写,次次用

把常用参数写进 ~/.config/gonzo/config.yml

files:
  - "/var/log/app/*.log"
  - "/var/log/nginx/*.log"
follow: true
update-interval: 2s
log-buffer: 2000
ai-model: "gpt-4"

以后直接敲 gonzo 即可。


8. 常见问题 FAQ

Q1:日志时间戳不准,会影响图表吗?

不会。Gonzo 用“接收时间”做时间轴,避免时钟漂移。

Q2:公司里没外网,怎么用 AI 功能?

启动本地 Ollama 或 LM Studio,照 4.6 的示例导出环境变量即可。

Q3:颜色太花,怎么关?

export NO_COLOR=1
gonzo -f app.log

Q4:能保存过滤结果吗?

暂不支持持久化,但过滤条件支持正则,写长一点就能精确命中。

Q5:Windows 能用吗?

官方二进制已提供 Windows exe,命令行用法完全一致。


9. 故障排查思路(用 Gonzo 看日志的 4 步)

  1. 打开 Gonzo,确认严重度分布:红色 ERROR 是否突然飙升。
  2. / 输入正则 timeout|5\d\d,高亮关键行。
  3. 按 Enter 进入详情,再用 AI 问一句:“这些异常集中在哪个服务?”
  4. 切到 Counts 弹窗,看服务分布,定位到某个 Pod 或实例。

10. 与 k9s 联动,一键看 Pod 日志

把下面内容写进 $XDG_CONFIG_HOME/k9s/plugins.yaml

plugins:
  gonzo:
    shortCut: Ctrl-L
    description: "Gonzo log analysis"
    scopes:
    - po
    command: sh
    background: false
    args:
    - -c
    - "kubectl logs -f $NAME -n $NAMESPACE --context $CONTEXT | gonzo"

以后在 k9s 里选中 Pod,按 Ctrl+L,日志直接进 Gonzo。


11. 开发者扩展

  • 语言:Go ≥1.21
  • 一键构建:
git clone https://github.com/control-theory/gonzo.git
cd gonzo
make build
  • 目录结构速记
cmd/gonzo/          入口
internal/tui/       终端界面
internal/ai/        AI 模块
internal/analyzer/  日志解析

12. 写在最后

Gonzo 把“看日志”这件小事做到了极致:
轻量(单二进制)、实时(tail -f 级)、智能(可选 AI)、易用(类 k9s 键位)。
如果你厌倦了在终端里反复 grep、awk,不妨花 5 分钟装一下,体验一次“日志追剧”的感觉。
任何问题,直接在官方仓库提 issue 就行,社区响应很快。

祝你排障顺利,不再熬夜盯日志。

退出移动版