#logs #kubernetes #filter #interactive #real-time #log-viewer #container

已下架 bul

Kubernetes的交互式日志分析器

2个版本

0.1.1 2024年5月23日
0.1.0 2024年5月20日

#3#log-viewer

MIT 许可协议

40KB
834 代码行

bul

ci

bul 提供一个交互式TUI,用于探索Kubernetes容器的日志。

功能

  • 根据关键词过滤流式容器日志
    • (目前) 不提供正则表达式、grep或模糊搜索级别的搜索功能
    • 通过 contains 提取匹配特定单词的日志
  • 挖掘模式
    • 切换到模式时,启用查询最新的N条日志
  • 重新连接到日志API
    • 允许用户控制何时重新连接
  • 流量控制,确定在特定时间段内渲染的日志数量

[!IMPORTANT] 请注意,bul 仍处于概念阶段和早期开发。未来的更新可能会显著改变其搜索能力和用户界面。

安装

Homebrew

brew install ynqa/tap/bul

Cargo

cargo install bul

动机

我经常使用 kubectl logsstern 通过检查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