【问题标题】:Google Container Engine stdout Logs Not Showing UpGoogle Container Engine 标准输出日志未显示
【发布时间】:2016-06-20 13:32:39
【问题描述】:

我的标准输出日志没有显示在 Google 日志查看器中,或者在使用 kubectl logs <pod> 时。集群启用了 Cloud Logging,并且 fluentd 容器在每个节点上运行。

示例 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”示例在我的集群上运行,因此 fluentd 容器正在获取标准输出并将其发送到日志查看器。

对我应该尝试的事情有什么建议吗?提前致谢。

【问题讨论】:

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


    【解决方案1】:

    日志肯定会输出到标准输出,只是在运行kubectl logs <pod_name> 时没有显示。它们也不会出现在 Google 日志查看器中。

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

    就我而言,我有一个调用脚本的 cron 作业。通过将脚本作为容器的入口点运行,日志可以正常显示。

    【讨论】:

      【解决方案2】:

      如果在您运行 kubectl logs pod 时没有显示日志,那么问题几乎可以肯定是来自您的应用程序的日志不会进入 stdout 或 stderr,因此您应该关注这一点。

      如果您在本地 docker run 您的应用程序会发生什么? docker logs 然后会显示您期望的日志吗?这至少应该让你有一个更快的迭代周期来尝试不同的方法来修复它。

      【讨论】:

      • 我想通了。日志被发送到标准输出,但在运行kubectl logs 时仍未显示。答案贴在下面。
      猜你喜欢
      • 2018-01-03
      • 1970-01-01
      • 2020-05-04
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2016-08-22
      相关资源
      最近更新 更多