使用datadog官方文档,我可以在DataDog UI中打印K8s stdout/stderr
日志,我的动机是打印由spring boot应用程序在某个位置生成的应用程序日志我的 Pod。
集群中完成的配置:
- 在我的集群中创建了 ServiceAccount 以及集群角色和集群角色绑定(bind)
- 创建了 K8s key 来保存 DataDog API key
- 在所有节点中将 DataDog Agent 部署为守护程序集
在应用程序中完成的配置:
- 下载 datadog.jar 并将其与我的应用执行一起检测
- 公开端口 8125 和 8126
- 在部署文件中添加了环境标记
DD_TRACE_SPAN_TAGS
、DD_TRACE_GLOBAL_TAGS
- 更改了
logback.xml
中的模式 - 在部署文件中添加了日志配置
- 在部署文件中添加了 env 标签
完成上述配置后,我可以在我想在 datadog UI 中记录应用程序日志的位置记录 stdout/stderr
日志
如果有人这样做了,请告诉我我在这里缺少什么。 如果需要,我也可以分享配置。提前致谢
最佳答案
在 K8s 集群中安装 Datadog 时,您会安装 Node Logging Agent作为在托管节点上安装有各种卷的守护进程集。除此之外,这使 Datadog 可以访问位于/var/log/pods 的 Pod 日志和位于/var/lib/docker/containers 的容器日志。
Kubernetes 和底层 Docker 引擎将仅包含来自这两个位置的 stdout 和 stderror 的输出(有关更多信息,请参阅 here)。容器写入驻留在容器内的日志文件的所有内容对于 K8s 都是不可见的,除非应用更多配置来提取该数据,例如通过应用 side care container pattern .
因此,为了让您的设置正常运行,将 logback 配置为记录到 stdout 而不是/var/app/logs/myapp.log
此外,如果您不使用 APM,则无需使用 datadog.jar 来检测您的代码并执行所有跟踪设置(设置端口等)。
关于kubernetes - 在 DataDog 中记录应用程序日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62549173/