我有一个 k8s 集群,其中安装了 datadog 的 helm。
我想将自定义指标发送到 datadog 的代理,但我不知道为dogstatsd 客户端主机设置什么值。
这些代理实际上是一个守护进程集,所以我认为本地主机可以工作,但事实并非如此。
而且,由于它是UDP,很难知道请求是否发送失败,因此很难尝试和出错。
有什么想法吗?
通常,您使用 DogStatsD 或通过自定义代理检查发送的任何指标都是自定义指标。
有多种方式可以将指标发送到Datadog:
将自定义应用程序指标导入 Datadog 的最简单方法是将其发送到 DogStatsD,这是与 Datadog Agent 捆绑在一起的指标聚合服务。
Set host and port to hostname/IP and port of the agent (if different from the default 127.0.0.1:8125)
statsd_host':'127.0.0.1
statsd_port':8125
请参阅此doc,了解有关通过 DogStatsD 提交自定义指标的更多信息
您还可以使用 Datadog 官方和社区贡献的 API 和 DogStatsD 客户端库之一来提交您的自定义指标
注意:自定义指标提交没有强制执行的固定速率限制。如果超出您的默认分配,您将根据 Datadog 的计费政策针对自定义指标进行计费。
Datadog 推荐的方法之一是使用 Unix 套接字而不是主机和端口,特别是对于 k8s 工作负载。 Helm(或操作员)安装的 DataDog 代理应该已经配置为使用套接字,并且套接字应该作为卷安装。 例如。在我的操作员安装的代理 DaemonSet 上,我有类似的东西(其他东西被删除)。
- mountPath: /var/run/datadog
name: dsdsocket
....
- hostPath:
path: /var/run/datadog
type: DirectoryOrCreate
name: dsdsocket
在此套接字上,可以将其安装到应用程序容器,并由客户端库使用
可以在此链接中找到相应语言的特定库。
https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=kubernetes