在命令行里看日志: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. 界面元素拆解
-
主面板:2×2 网格
-
日志列表 -
词频图 -
时间序列 -
严重度分布
-
-
全屏日志:按 f 进入,滚轮翻页,支持 Home / End 跳头尾。
-
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 步)
-
打开 Gonzo,确认严重度分布:红色 ERROR 是否突然飙升。 -
按 /
输入正则timeout|5\d\d
,高亮关键行。 -
按 Enter 进入详情,再用 AI 问一句:“这些异常集中在哪个服务?” -
切到 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 就行,社区响应很快。
祝你排障顺利,不再熬夜盯日志。