我们关注了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/