【问题标题】:Get Dataproc Logs to Stackdriver Logging将 Dataproc 日志获取到 Stackdriver 日志记录
【发布时间】:2019-01-28 11:21:49
【问题描述】:
我正在运行 Dataproc 并使用默认的 client-mode 提交 Spark 作业。
作业的日志在 GCP 控制台中可见,并且在 GCS 存储桶中可用。不过,我想查看 Stackdriver Logging 中的日志。
目前,我发现的唯一方法是改用cluster-mode。
在使用client-mode 时,有没有办法将日志推送到 Stackdriver?
【问题讨论】:
标签:
apache-spark
log4j
google-cloud-dataproc
【解决方案1】:
这是 Dataproc 团队正在积极开展的工作,应该很快就会为您提供解决方案。如果您想提交公共功能请求以跟踪此功能,这是一个选项,但当您可以使用此功能时,我会尝试更新此响应。
深入研究一下,使用集群模式时可以看到日志的原因是我们有 Fluentd 配置,默认情况下会获取 YARN 容器日志(用户日志)。在集群模式下运行时,驱动程序在 YARN 容器中运行,并且这些日志由该配置获取。
目前,驱动程序产生的输出由 Dataproc 代理直接转发到 GCS。将来会有一个选项,可以在启动集群时将所有驱动程序输出发送到 Stackdriver。
更新:
此功能现在处于测试阶段,可以稳定使用。创建集群时,属性“dataproc:dataproc.logging.stackdriver.job.driver.enable”可用于切换集群是否将作业驱动程序日志发送到 Stackdriver。此外,您可以使用属性“dataproc:dataproc.logging.stackdriver.job.yarn.container.enable”让集群将 YARN 容器日志与它们创建的作业相关联,而不是它们运行的集群。
文档可用here