Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 来自kubernetes multiple pods的特定文本的Grep_Logging_Kubernetes_Grep_Kubernetes Pod_Wc - Fatal编程技术网

Logging 来自kubernetes multiple pods的特定文本的Grep

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记录

我有两个豆荚为一个特定的服务运行。我想获取与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记录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