2个版本
0.1.1 | 2024年5月23日 |
---|---|
0.1.0 | 2024年5月20日 |
#3 在 #log-viewer
40KB
834 代码行
bul
bul 提供一个交互式TUI,用于探索Kubernetes容器的日志。
功能
- 根据关键词过滤流式容器日志
- (目前) 不提供正则表达式、grep或模糊搜索级别的搜索功能
- 通过 contains 提取匹配特定单词的日志
- 挖掘模式
- 切换到模式时,启用查询最新的N条日志
- 重新连接到日志API
- 允许用户控制何时重新连接
- 流量控制,确定在特定时间段内渲染的日志数量
[!IMPORTANT] 请注意,bul 仍处于概念阶段和早期开发。未来的更新可能会显著改变其搜索能力和用户界面。
安装
Homebrew
brew install ynqa/tap/bul
Cargo
cargo install bul
动机
我经常使用 kubectl logs
或 stern 通过检查Kubernetes Pod的日志来分析错误或调试应用程序。
例如
kubectl logs -n my-namespace my-pod | grep "something"
# Or
stern pod-query | grep "something"
通常,在分析日志时,这些命令会与 grep
结合使用以过滤特定关键词。然而,这个过程需要反复运行带有调整参数的命令,每次重新运行命令都可能很麻烦。
为了解决这个问题,bul 项目提供了一个允许用户实时过滤和审查日志的界面。这种设计允许动态调整过滤标准,而无需重新运行命令。
快捷键
键 | 动作 |
---|---|
Ctrl + C | 退出 bul |
Ctrl + F | 进入挖掘模式 |
Ctrl + R | 重新连接到日志API |
← | 将光标向左移动一个字符 |
→ | 将光标向右移动一个字符 |
Ctrl + A | 将光标移到过滤的开始处 |
Ctrl + E | 将光标移到过滤的末尾 |
退格键 | 删除光标位置处的过滤字符 |
Ctrl + U | 删除过滤的所有字符 |
用法
Interactive Kubernetes log viewer
Usage: bul [OPTIONS]
Options:
--context <CONTEXT>
Kubernetes context.
-n, --namespace <NAMESPACE>
Kubernetes namespace.
-p, --pod-query <POD_QUERY>
query to filter Pods.
--container-states <CONTAINER_STATUS>
Container states to filter containers. [default: all] [possible values: all, running, terminated, waiting]
--log-retrieval-timeout <LOG_RETRIEVAL_TIMEOUT_MILLIS>
Timeout to read a next line from the log stream in milliseconds. [default: 100]
--render-interval <RENDER_INTERVAL_MILLIS>
Interval to render a log line in milliseconds. [default: 10]
-q, --queue-capacity <QUEUE_CAPACITY>
Queue capacity to store the logs. [default: 1000]
-h, --help
Print help (see more with '--help')
依赖
~63MB
~1M SLoC