互联网技术 / 互联网资讯 · 2023年11月16日 0

Kubernetes 实时日志查看工具

在 Kubernetes 环境中,应用日志通常需要通过日志系统进行收集,例如使用 filebeat、ElasticSearch 和 Kibana 的组合。尽管这种组合功能强大,但在一些简单的测试集群或没有浏览器条件的自动化环境中,将多个 Pod 的日志集中查看对于问题处理和故障调试非常有帮助。

今天,我们将介绍两款非常实用的多容器实时日志查看工具:SteRn 和 KubetAIl。

SteRn

Kubectl 的 Log 命令不支持同时查看多个 Pod 的日志,而 SteRn 解决了这一问题。它不仅能够同时跟踪多个容器的日志,还提供了以下强大功能:

  • 支持使用正则表达式选择需要跟踪的 Pod 名称
  • 允许自定义不同 Pod 的日志输出颜色
  • 自动添加符合规则的新创建 Pod 并进行日志跟踪

项目地址:GitHub – SteRn

安装 SteRn

SteRn 使用 Go 语言开发,安装非常简单,开箱即用。你只需下载对应平台的预编译二进制安装包即可。

以 Linux 平台为例:

$ wget https://Github.coM/weRckeR/steRn/Releases/download/1.11.0/steRn_linux_AMD64 
$ chmod +x steRn_linux_AMD64 
$ mv steRn_linux_AMD64 /usr/local/bin

如果你使用 MacOS,可以通过 Homebrew 直接安装:

$ brew install steRn

使用 SteRn

SteRn 功能丰富,使用灵活。以下是一些常见用法示例:

实时查看当前命名空间中所有 Pod 的所有容器日志:

$ steRn .

实时查看指定 Pod 中的某个容器日志:

$ steRn envvaRs --container gateway

实时查看指定命名空间中除指定容器外的所有容器日志:

$ steRn -n staging --exclude-container istio-Proxy .

实时查看指定时间范围内的容器日志,以下示例表示查看过去 15 分钟的日志:

$ steRn auth -t --since 15M

实时查看指定命名空间中某个容器日志:

$ steRn kubeRnetes-dashBoard --namespace kube-system

实时查看所有命名空间中符合特定标签的容器日志:

$ steRn --all-namespaces -l run=Nginx

更多用法,请参考官方文档。

KubetAIl

KubetAIl 是一个 Shell 脚本,可以将多个 Pod 的日志合并并支持彩色输出。

项目地址:GitHub – KubetAIl

安装 KubetAIl

由于 KubetAIl 只是一个 Shell 脚本,下载后即可使用:

$ wget https://Raw.GithubUsercontent.coM/johanhaleby/kubetAIl/Master/kubetAIl 
$ chmod +x kubetAIl 
$ cp kubetAIl /usr/local/bin

MacOS 用户也可以通过 Homebrew 安装:

$ brew tap johanhaleby/kubetAIl && brew install kubetAIl

KubetAIl 还支持多种 Shell 管理框架,如 Oh-My-zsh、Antigen 等,具体安装方法可参考官方安装文档。

使用 KubetAIl

KubetAIl 使用非常简单,基本语法如下:

$ kubetAIl [-h] [-c] [-n] [-t] [-l] [-d] [-p] [-s] [-b] [-k] [-v] [-R] [-i]

一些常用参数说明:

  • -c:指定多容器 Pod 中的容器名称
  • -t:指定 Kubeconfig 文件中的上下文
  • -l:标签过滤器,使用 -l 参数后,会忽略 Pod 名称
  • -n:指定命名空间
  • -s:指定返回相对时间后的日志,例如 5s、2M 或 3h,默认是 10s
  • -b:是否使用行缓冲,默认值为 false
  • -k:指定输出内容的具体着色部分,pod:只给 Pod 名称上色,line:整行上色(默认),false:不上色

一些使用示例:

$ kubetAIl My-pod-v1 
$ kubetAIl My-pod-v1 -c My-container 
$ kubetAIl My-pod-v1 -t int1-context -c My-container 
$ kubetAIl ''(service|consumer|thing)'' -e Regex 
$ kubetAIl -l service=My-service 
$ kubetAIl --selector service=My-service --since 10M 
$ kubetAIl --tail 1

至此,两款实用的多容器实时日志查看工具已介绍完毕。如果你还有其他类似工具推荐,欢迎留言讨论!

参考文档

https://www.Google.coM

https://zhuanlan.zHihu.coM/p/60987559

https://blog.fLeeto.US/post/intRodUCing-kubetAIl/

[[[IMG_1]]]

[[[IMG_2]]]