【问题标题】:Logging application logs in DataDog在 DataDog 中记录应用程序日志
【发布时间】:2020-06-24 06:41:37
【问题描述】:

使用 datadog 官方文档,我可以在 DataDog UI 中打印 K8s stdout/stderr 日志,我的动机是在我的 Pod 中的某个位置打印 Spring Boot 应用程序生成的应用程序日志。

在集群中完成的配置:

  1. 在我的集群中创建了 ServiceAccount 以及集群角色和集群角色绑定
  2. 创建了 K8s 密钥来保存 DataDog API 密钥
  3. 将 DataDog 代理部署为所有节点中的守护程序集

在 App 中完成的配置:

  1. 下载 datadog.jar 并将其与我的应用程序执行一起检测
  2. 暴露端口 8125 和 8126
  3. 在部署文件中添加了环境标签DD_TRACE_SPAN_TAGSDD_TRACE_GLOBAL_TAGS
  4. logback.xml 中的模式已更改
  5. 在部署文件中添加了日志配置
  6. 在部署文件中添加了 env 标签

完成上述配置后,我可以在我想在 datadog UI 中记录应用程序日志的地方记录 stdout/stderr 日志

如果有人这样做,请让我知道我在这里缺少什么。 如果需要,我也可以共享配置。提前致谢

【问题讨论】:

  • 来自您的 cmets “我可以登录”,所以 这里有什么问题? 以及寻求调试帮助的问题(“为什么不此代码有效吗?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。见:How to create a Minimal, Complete, and Verifiable example
  • 也使用 datadog 并且我不知道 datadogs 端有任何配置来区分 stdout 和 stderror。此外,不确定 Spring Boot 应用程序写入标准输出的内容。通常所有的 logback 记录都在标准输出中完成。你怎么知道,你从标准输出中看到了什么?
  • @abestrad,感谢您的评论,您可能知道当我们在 K8s 集群中部署我们的应用程序时,我们可以使用命令 kubectl logs -f <pod_name> 查看日志,这些日志记录在 datadog UI 中,因为我想在 DataDog UI 中记录我的应用程序日志,这些日志是使用路径 /var/app/logs/myapp.log 中的 logback.xml 配置的。
  • @FritzDuchardt 使用 logback.xml 我们可以在我们的 pod 中的某个位置打印我们的应用程序日志或业务逻辑日志,这可以更好地了解应用程序的运行情况。我想在 DataDogUI 中记录这些应用程序日志而不是 stdout/stderr 日志

标签: kubernetes monitoring datadog


【解决方案1】:

在您的 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 检测您的代码并进行所有跟踪设置(设置端口等)。

【讨论】:

  • 感谢@FritzDuchardt,配置 logback 以在控制台中打印所有日志就可以了。我已经接受了答案,但由于声誉低下,它不公开可见。
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
相关资源
最近更新 更多