从指定级别的 Kubectl POD 获取日志(仅限 ERROR)

问题描述 投票:0回答:3

我想知道是否可以过滤日志,只显示错误级别

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 行的延续并且将被隐藏!

可以吗?

提前致谢!

logging kubectl log-level
3个回答
1
投票

根据this文档,似乎没有办法做到这一点。有一个详细程度标志

-v
但这是针对
kubectl
本身的详细程度,而不是针对
pods/containers
获取的日志中。

然后您还可以使用

this
文档中提供的
--stderrthreshold <SEVERITY>
选项来选择 kubectl,但我怀疑这是同一件事。

也许处理此问题的更好方法是为集群设置所谓的

logging architecture
,您可以在其中控制 pod 实际生成哪些日志。 (阅读更多这里)这样,从
kubectl
获取它们可能会更可取。

出于这个特定原因,我们几乎总是在 k8s 之外使用第三方集中式日志记录解决方案(如 fleuntd)。我们只需将一个日志记录 sidecar 容器注入到您的 pod 中,该容器会不断将日志转储到这个中央组件。这是一种非常常见的设计模式。


0
投票

可以使用grep功能从整个日志中过滤错误

kubectl logs -f -n bci-api the-pod | grep -i 'Error'

0
投票

除了上面的@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

© www.soinside.com 2019 - 2024. All rights reserved.