Logging 来自kubernetes multiple pods的特定文本的Grep
我有两个豆荚为一个特定的服务运行。我想获取与pod相关的日志,并检查特定的文本 对于我使用的,如所述:Logging 来自kubernetes multiple pods的特定文本的Grep,logging,kubernetes,grep,kubernetes-pod,wc,Logging,Kubernetes,Grep,Kubernetes Pod,Wc,我有两个豆荚为一个特定的服务运行。我想获取与pod相关的日志,并检查特定的文本 对于我使用的,如所述: kubectl logs-l app=my app-c my app container--since=25m | grep-i“搜索文本”| wc-l 这不会输出任何内容,即使有匹配的搜索文本 然后尝试部署 kubectl日志部署/my-app部署-c my-app容器-since=90m | grep-i“搜索文本”| wc-l 如何在所有相关的pod中搜索此特定字符串 kubectl记录
kubectl logs-l app=my app-c my app container--since=25m | grep-i“搜索文本”| wc-l
这不会输出任何内容,即使有匹配的搜索文本
然后尝试部署
kubectl日志部署/my-app部署-c my-app容器-since=90m | grep-i“搜索文本”| wc-l
如何在所有相关的pod中搜索此特定字符串
kubectl记录my-pod-1-c我的应用程序容器——因为=90m | grep-i“搜索文本”| wc-l
,这给出了正确的计数
参考资料:
kubectl日志
仅限于一次查看单个pod的日志。但是,您可以使用-l
标志使用选择器(标签查询)进行筛选。例如:
kubectl logs -l app=nginx -l app=php
如果需要查看容器日志,请使用-c
标志。可以找到更多受支持的标志和示例
当您能够从所需的pod/容器中查看日志时,就可以使用grep
过滤输出了。例如,我从一个吊舱里得到了一些日志:
~$ kubectl logs nginx-app-b8b875889-4nn52
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
我只希望看到带有“配置”一词的行,因此我执行:
$ kubectl logs nginx-app-b8b875889-4nn52 | grep configuration
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
或者,如果我想计算带有“info”一词的行数,则:
有关更多详细信息,请参阅。请记住,如果您没有指定像--since=
或--tail=
这样的参数,并且您试图从中查看日志的Pod运行了较长的时间,那么结果可能会产生误导
通常情况下,我还建议使用第三方工具,如or,它们比简单的kubectl日志
更强大,但在您的用例中,两者结合使用:
kubectl日志-l
| grep
kubectl logs deployment/my app deployment
和kubectl logs my-pod-1-c my app container
,这与my app deployment
部署不对应。列出所有部署、POD和标签,以确保您检查了正确的资源。使用:
kubectl get deploy,pods --show-labels
可以先检查一下这个的输出:
kubectl logs-l app=my app-c my app container-since=25m
?它是否返回预期的日志?您可以使用此选项获取与标签匹配的所有容器的吊舱:kubectl logs-l app=my app--all containers | grep“time”| wc
不确定可能有什么问题,检查grep结果是否用于任何其他字符串,以确保您要查找的模式不需要使用“\”转义。@sachithmuhandram您是否设法使其工作?我明白了。您是否考虑过使用更强大的工具来跟踪日志,如或?它们与简单的kubectl日志一样易于使用,并提供了更多选项,我认为这些选项可以满足您的用例。@sachithmuhandram我做了一个小编辑,您可能会感兴趣。请看一看。
kubectl get deploy,pods --show-labels