kubernetes - 在 DataDog 中记录应用程序日志

标签 kubernetes monitoring datadog

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

集群中完成的配置:

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

在应用程序中完成的配置:

  1. 下载 datadog.jar 并将其与我的应用执行一起检测
  2. 公开端口 8125 和 8126
  3. 在部署文件中添加了环境标记 DD_TRACE_SPAN_TAGSDD_TRACE_GLOBAL_TAGS
  4. 更改了 logback.xml 中的模式
  5. 在部署文件中添加了日志配置
  6. 在部署文件中添加了 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/

相关文章:

ssh - 如何通过 ssh 连接到在 OpenShift/Kubernetes 集群中运行的容器?

kubernetes - Terraform:使用一个应用启动 GKE 集群和 Ingress 应用程序

python - Nagios/Centreon 错误 : Return code 127 is out of bounds : Plugin may be missing

elasticsearch - 如何使用 Datadog 监控 Elastic Cloud 上的 ElasticSearch 集群?

python - 从相邻的 Kubernetes Pod 访问 dogstatsd (datadog) Pod

google-compute-engine - 在只读模式下安装GDE磁盘时出现NoDiskConflict

amazon-web-services - 如何通过 Kubernetes 预置 AWS 服务?

monitoring - MSMQ 监控

Spring Actuator - 来自 docker 容器的指标聚合

kubernetes-helm - 错误 : UPGRADE FAILED: failed to create resource: ConfigMap in version "v1" cannot be handled as a ConfigMap