6 个版本 (2 个稳定版)
1.1.0 | 2019 年 10 月 28 日 |
---|---|
1.0.0 | 2019 年 7 月 10 日 |
1.0.0-rc6 | 2019 年 6 月 12 日 |
0.1.0 | 2019 年 6 月 12 日 |
#9 在 #log-viewer
185KB
5K SLoC
woodchipper
从终端跟随、转换和探索所有难以管理的微服务日志。
- 实时摄入任何格式的日志
- 将所有日志转换为几种统一的格式之一
- 格式化的纯文本以便分享
- 样式化并包装以便易于阅读
- JSON 以便机器处理
- 交互式终端界面添加了无痛苦的搜索、过滤、文本重排和剪贴板支持
- 内置 Kubernetes 支持,可同时跟踪多个 pod 和容器
- 用户可自定义输出样式和自定义日志格式(见 自定义)
快速入门
-
从 发布页面 获取预构建的二进制文件或运行
cargo install woodchipper
查看 安装页面 获取详细说明。
-
跟踪一些日志
tail -f /var/log/my-app.log | woodchipper
-
使用
kubectl
插件 包装脚本并监视一些 podkubectl woodchipper -n my-namespace app=my-app
用法
将任何日志管道传输到 woodchipper
cat my-log.txt | woodchipper
这将默认打开交互式查看器。使用上箭头、下箭头、翻页上、翻页下、主页和结束键进行导航。
woodchipper 还会跟踪任何流式输出
./some-long-running-script.sh | woodchipper
在管道传输时,woodchipper 会自动输出漂亮的格式化纯文本,适合分享
./some-hard-to-read-json-logs.sh | woodchipper | cat
或者,如果您只想将着色日志打印到您的终端
./logs.sh | woodchipper -r styled
如果您不喜欢交互式查看器但仍然需要分页器,请尝试 less
cat logs.txt | woodchipper -r styled | less
(如果您的 less
默认不传递 ANSI 转义,请尝试 less -R
)
交互式查看器
交互式查看器提供了一个改进的分页器,具有正则表达式搜索和过滤功能。如果将woodchipper连接到tty,则默认启用。
提供了一些键盘快捷键
向上
,向下
:逐条消息移动光标向上翻页
,向下翻页
:逐屏滚动home
,end
:移动到所有消息的开始或结束f
,|
:向堆栈添加过滤器- 可以自由输入过滤器正则表达式
- 无效的过滤器正则表达式将以红色突出显示
- 在您输入时突出显示匹配的消息
enter
:将过滤器添加到堆栈并删除所有非匹配消息esc
:取消过滤器
p
:从堆栈中弹出最后一个过滤器/
,ctrl-f
:搜索特定消息;在过滤器模式下- 可以自由输入搜索正则表达式
- 无效的搜索正则表达式将以红色突出显示
- 所有匹配的消息都会被突出显示;在您输入时,光标将跳转到最近的向前匹配项
enter
:下一个匹配项ctrl-p
:上一个匹配项esc
:结束搜索;如果突出显示了一个结果,它将保持突出显示
c
:将选定的消息复制到剪贴板作为可共享的纯文本shift-c
:将当前屏幕复制到剪贴板作为可共享的纯文本q
:退出
交互式查看器与将鼠标滚轮输入视为在替代屏幕模式下上/下按键的终端模拟器配合使用效果最佳。KDE的Konsole默认就是这样做的,您可以在iTerm2中通过“首选项”->“高级”->“鼠标”->“在替代屏幕模式下滚动轮发送箭头键”启用此功能。将来可能添加捕获所有终端鼠标事件的选项,但这样做将禁用文本选择,这不是最佳选择。
kubectl 插件
对于
kubectl
1.13+,了解更多
为了充分利用Kubernetes集成
- 确保
kubectl
可用并在您的$PATH
- 在您的
$PATH
上安装 包装脚本
Woodchipper使用 kubectl proxy
访问Kubernetes API,因此如果 kubectl
可以连接到集群,它也可以连接。
要跟踪名为 my-pod-1234
的Pod,请运行
kubectl woodchipper -n my-namespace my-pod-1234
或者,如果您不想使用kubectl插件,这与此等效
woodchipper --reader=kubernetes -n my-namespace my-pod-1234
Woodchipper通过子字符串持续匹配Pod,因此在重启或部署升级之间,部分Pod名称也会跟随Pod
woodchipper --reader=kubernetes -n my-namespace my-pod
可以使用多个子字符串
kubectl woodchipper -n my-namespace my-pod my-other-pod
或者,如果您提供类似于标签的选择器,它将执行标签查询
kubectl woodchipper -n my-namespace app=my-app
注意,一次只能使用一个标签选择器。
Woodchipper会尊重您配置的kubectl
默认命名空间,所以如果kubectl
已经配置使用它,您就可以省略-n my-namespace
。或者,可以将环境变量WD_NAMESPACE
设置以覆盖默认值。
支持的日志格式
Woodchipper可以解析、格式化和美化以下任意日志,可以混合使用
- 多种JSON日志格式,例如:
{"time": "...", "msg": "hello world"}
- logrus风格的键值对日志,例如:
time="..." msg="hello world"
- klog日志,用于Kubernetes组件
- 带推断时间戳和日志级别的纯文本日志
- 使用正则表达式解析器用户指定的自定义格式
类似项目
贡献
欢迎提交错误报告、功能请求和拉取请求!请务必阅读行为准则以了解如何开始。
请注意,如行为准则中所述,代码贡献必须表明您接受开发者证书,这本质上表明您有权贡献的代码,并且您同意项目的许可协议(MIT)。使用Git CLI,只需将-s
传递给git commit
git commit -s [...]
... Git将自动将所需的Signed-off-by: ...
添加到您的提交信息末尾。
此外,设计文档可能是了解Woodchipper工作原理的有用资源。
依赖项
~29MB
~582K SLoC