Google 容器引擎标准输出日志未显示
Google Container Engine stdout Logs Not Showing Up
我的标准输出日志没有显示在 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 容器正在获取标准输出并将其发送到日志查看器。
对我应该尝试的事情有什么建议吗?提前致谢。
如果在您 运行 kubectl logs pod
时日志没有显示,那么问题几乎可以肯定是您的应用程序的日志不会发送到 stdout 或 stderr,所以这就是原因你应该关注。
如果您 docker run
在本地应用程序会怎样? docker logs
会显示您期望的日志吗?这至少应该让你有一个更快的迭代周期来尝试不同的方法来修复它。
日志肯定会输出到标准输出,只是在 运行 kubectl logs <pod_name>
时没有出现。它们也不会出现在 Google 日志查看器中。
这是因为发送到 stdout 的日志只有来自作为 Docker 容器入口点的进程时才会被捕获。在 shell 中或通过 cron 作业完成的事情不会显示。
在我的例子中,我有一个调用脚本的 cron 作业。通过 运行 脚本作为容器的入口点,日志显示正常。
我的标准输出日志没有显示在 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 容器正在获取标准输出并将其发送到日志查看器。
对我应该尝试的事情有什么建议吗?提前致谢。
如果在您 运行 kubectl logs pod
时日志没有显示,那么问题几乎可以肯定是您的应用程序的日志不会发送到 stdout 或 stderr,所以这就是原因你应该关注。
如果您 docker run
在本地应用程序会怎样? docker logs
会显示您期望的日志吗?这至少应该让你有一个更快的迭代周期来尝试不同的方法来修复它。
日志肯定会输出到标准输出,只是在 运行 kubectl logs <pod_name>
时没有出现。它们也不会出现在 Google 日志查看器中。
这是因为发送到 stdout 的日志只有来自作为 Docker 容器入口点的进程时才会被捕获。在 shell 中或通过 cron 作业完成的事情不会显示。
在我的例子中,我有一个调用脚本的 cron 作业。通过 运行 脚本作为容器的入口点,日志显示正常。