我想知道是否可以过滤日志,只显示错误级别
kubectl logs -f -n the-namespace the-pod [LOG-LEVEL?]
仅在示例中ERROR
我正在尝试:
kubectl logs -f -n bci-api the-pod | awk '{ if ($3 == "ERROR") { print } }'
问题是,是否有一些行是 ERROR 行的延续并且将被隐藏!
可以吗?
提前致谢!
根据this文档,似乎没有办法做到这一点。有一个详细程度标志
-v
但这是针对 kubectl
本身的详细程度,而不是针对 pods/containers
获取的日志中。
然后您还可以使用
this文档中提供的
--stderrthreshold <SEVERITY>
选项来选择 kubectl
,但我怀疑这是同一件事。
也许处理此问题的更好方法是为集群设置所谓的
logging architecture
,您可以在其中控制 pod 实际生成哪些日志。 (阅读更多这里)这样,从 kubectl
获取它们可能会更可取。
出于这个特定原因,我们几乎总是在 k8s 之外使用第三方集中式日志记录解决方案(如 fleuntd)。我们只需将一个日志记录 sidecar 容器注入到您的 pod 中,该容器会不断将日志转储到这个中央组件。这是一种非常常见的设计模式。
可以使用grep功能从整个日志中过滤错误
kubectl logs -f -n bci-api the-pod | grep -i 'Error'
除了上面的@Be_hegade答案之外,如果您的错误沿多行传播,或者您想查看额外的内容,您可以使用以下
grep
命令标志:
-B, --before-context=NUM print NUM lines of leading context
-A, --after-context=NUM print NUM lines of trailing context
-C, --context=NUM print NUM lines of output context
-NUM same as --context=NUM