Google容器引擎标准输出日志未显示

时间:2016-06-20 13:32:39

标签: python docker kubernetes google-kubernetes-engine google-cloud-logging

我的stdout日志未显示在Google Logs Viewer中或使用kubectl logs <pod>时。群集启用了云日志记录,并且每个节点上都运行了流畅的容器。

示例Python代码:

logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info("test log")

their docs中的“counter-pod”示例可以在我的群集上运行,因此流畅的容器正在拾取stdout并将其发送到Logs Viewer。

我应该尝试的任何建议吗?提前谢谢。

2 个答案:

答案 0 :(得分:4)

日志肯定会转到stdout,它们只是在运行kubectl logs <pod_name>时才会显示。它们也不会出现在Google Logs Viewer中。

这是因为发送到stdout的日志只有在来自Docker容器入口点的进程时才会被捕获。在shell中或通过cron作业完成的事情都没有显示出来。

在我的情况下,我有一个调用脚本的cron作业。通过将脚本作为容器的入口点运行,日志显示正常。

答案 1 :(得分:0)

如果在运行kubectl logs pod时日志没有显示,那么几乎可以肯定的是,您的应用程序中的日志不会转到stdout或stderr,因此&#39;你应该关注的是什么。

如果您在本地docker run申请,会发生什么?然后docker logs会显示您期望的日志吗?这至少应该让你有一个更快的迭代周期来解决它的不同方法。