kubernetes - DataDog 日志摄取不适用于 Kubernetes 集群

标签 kubernetes logging devops datadog

我们关注了these instructions使用他们的运算符(operator)在我们的 Kubernetes 1.22 集群中设置 DataDog。这是通过 helm 安装的,没有任何定制。

operator、cluster-agent 和 per-node agent pod 都按预期运行。我们知道代理能够与 DataDog 端点成功通信,因为我们的新集群显示在 DataDog 的基础设施 ListView 中。

但是,来 self 们应用程序的 pod 的日志没有出现在 DataDog 中,我们正在努力找出原因。

我们确保确认的一些显而易见的事情:

  • agent.log.enabled 在我们的代理规范中为真(下面包含完整的 YAML)。
  • 我们的应用程序 pod 的日志存在于 /var/log/pods/ 中,并且包含我们期望的日志行。
  • DataDog 代理能够看到这些日志文件。

因此,在代理和 DataDog UI 中可用的日志之间,似乎某事出了问题。有没有人对如何调试这个有任何想法?


我们代理的配置:

apiVersion: datadoghq.com/v1alpha1
kind: DatadogAgent
metadata:
  name: datadog
  namespace: datadog
spec:
  agent:
    apm:
      enabled: false
    config:
      tolerations:
        - operator: Exists
    image:
      name: "gcr.io/datadoghq/agent:latest"
    log:
      enabled: true
    process:
      enabled: false
      processCollectionEnabled: false
  clusterAgent:
    config:
      admissionController:
        enabled: true
        mutateUnlabelled: true
      clusterChecksEnabled: true
      externalMetrics:
        enabled: true
    image:
      name: "gcr.io/datadoghq/cluster-agent:latest"
    replicas: 1
  clusterChecksRunner: {}
  credentials:
    apiSecret:
      keyName: api-key
      secretName: datadog-secret
    appSecret:
      keyName: app-key
      secretName: datadog-secret
  features:
    kubeStateMetricsCore:
      enabled: false
    logCollection:
      enabled: true
    orchestratorExplorer:
      enabled: false

以下是其中一个 DataDog 代理的环境变量:

DD_API_KEY : secretKeyRef(datadog-secret.api-key)
DD_CLUSTER_AGENT_AUTH_TOKEN : secretKeyRef(datadog.token) 
DD_CLUSTER_AGENT_ENABLED : true
DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME : datadog-cluster-agent
DD_COLLECT_KUBERNETES_EVENTS : false
DD_DOGSTATSD_ORIGIN_DETECTION : false
DD_DOGSTATSD_SOCKET : /var/run/datadog/statsd/statsd.sock
DD_EXTRA_CONFIG_PROVIDERS : clusterchecks endpointschecks
DD_HEALTH_PORT : 5555
DD_KUBERNETES_KUBELET_HOST : fieldRef(v1:status.hostIP)
DD_LEADER_ELECTION : false
DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL : false
DD_LOGS_CONFIG_K8S_CONTAINER_USE_FILE : true
DD_LOGS_ENABLED : true
DD_LOG_LEVEL : INFO
KUBERNETES : yes

最佳答案

如果您能够看到指标,那么对于日志,我可以看到两个可能的原因

  • 在 helm 安装期间启用日志收集
helm upgrade -i datadog --set datadog.apiKey=mykey datadog/datadog --set datadog.logs.enabled=true
  • 区域配置错误,默认情况下需要 US
helm upgrade -i datadog --set datadog.apiKey=my-key datadog/datadog --set datadog.site=us5.datadoghq.com

如果这两个是正确的,确保pod写日志stdout/sterror

因为默认的日志路径似乎是正确的

         - name: logpodpath
            mountPath: /var/log/pods
            mountPropagation: None

除此之外,您还需要将容器列表列入白名单以从中收集日志,或者您可以将以下 ENV 设置为 true,它应该可以工作并收集所有日志。

DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true

关于kubernetes - DataDog 日志摄取不适用于 Kubernetes 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73973643/

相关文章:

logging - Jenkins :777 文件的权限被拒绝

tomcat - 如何在 Tomcat 7 中记录所有请求/响应 header

docker - 是否可以从主机操作系统文件系统访问 Kubernetes 中已安装的卷

kubernetes - 使用 calico 的适当 coredns 配置是什么?

parsing - Seq.Api.Client.SeqApiException : 400 - The filter expression could not be successfully parsed

amazon-web-services - AWS cli 今天开始随机失败......?

kubernetes - 无需从teamcity进行解码即可获取密码的任何其他选项

azure - Azure Devops 托管代理的 ARM64 标签

macos - Minikube 无法在 Mac 上使用 VPN 启动

kubernetes - 用于 Kubernetes 自动缩放的节点和 Pod 锁定