Datadog不显示Kubernetes集群中Go微服务上报的自定义指标排查求助
Kubernetes环境Go服务Datadog自定义指标上报失败排查方案
- 首先检查StatsD客户端连接地址配置:你代码中写死了
127.0.0.1:8125作为上报地址,仅当Datadog Agent以Sidecar形式和你的应用部署在同一个Pod时该地址生效。如果你的Datadog Agent是以DaemonSet形式部署在每个节点上,需要通过Kubernetes Downward API将节点IP注入为应用容器的环境变量(通常命名为DD_AGENT_HOST),代码中读取该环境变量作为上报地址,而不是使用本地回环地址。 - 确认Datadog Agent的DogStatsD配置与端口协议:
- DogStatsD默认使用UDP协议,检查Agent部署配置中开放的8125端口、你配置的应用hostPort是否都指定了UDP协议,误配为TCP会导致流量无法正常收发
- 检查Agent配置中
dogstatsd_non_local_traffic参数是否设置为true,允许接收来自节点外其他Pod的上报流量
- 排查网络限制规则:检查Kubernetes集群内是否配置了网络策略,禁止应用Pod向节点的8125 UDP端口发送流量;同时排查Azure集群对应的网络安全组(NSG)规则,是否拦截了该端口的UDP流量
- 校验指标搜索规则:你的代码中配置了指标前缀
myapp.,最终上报的指标名为myapp.my_counter,在Datadog控制台检索时需要带上完整前缀,避免漏查 - 手动验证连通性:进入运行中的应用容器,执行测试命令手动上报指标:
echo -n "myapp.test_counter:1|c" | nc -u <Datadog Agent地址> 8125,随后查看控制台是否能检索到该测试指标,快速定位是网络问题还是代码配置问题
内容的提问来源于stack exchange,提问作者ord_bear
相关产品推荐
相关产品推荐

