10

我在 Amazon linux ec2 上安装了 dd-agent。如果我直接在主机上运行我的 python 脚本(我使用名为“dogstatsd-python”的 SDK),所有指标都可以发送到 datadog(我登录到 datadoghq.com 并在那里看到了指标)。脚本类似于:

from statsd import statsd
statsd.connect('localhost', 8125)
statsd.increment('mymetrics')

但是,我启动了一个 docker 容器并从容器内部运行相同的脚本:

from statsd import statsd
statsd.connect('172.14.0.1', 8125)
statsd.increment('my metrics')

'172.14.0.1'是主机的IP,用命令提取

netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'

根本没有向datadog发送任何指标......

我猜这可能是由于一些配置问题,如“地址绑定”。也许我在主机上安装的 dd-agent 只能从“localhost”接收指标。

希望有人可以帮助我。先感谢您。

4

3 回答 3

11

您将需要non_local_traffic: yes在您的/etc/dd-agent/datadog.conf文件中进行设置。否则代理将拒绝来自容器的指标。

设置后,您需要重新启动代理才能使更改生效:sudo /etc/init.d/datadog-agent restartsudo service datadog-agent restart

docker -dd-agent镜像non_local_traffic: yes默认启用。

于 2016-02-01T14:31:05.463 回答
3

如果dd-agent监听localhost它只能从本地主机(127.0.0.1)接收数据。尝试将dd-agent主机更改为0.0.0.0而不是localhost.

我们正在使用docker-dd-agent,它适用于 OOTB。

于 2016-01-31T11:39:25.457 回答
0

在这种情况下,您实际上并不想使用主机的 IP。如果您正在运行 docker dd-agent,则可以使用两个环境变量:

statsd.connect(DOGSTATSD_PORT_8125_UDP_ADDR, DOGSTATSD_PORT_8125_UDP_PORT)

这应该够了吧。如果没有,您应该能够在 Datadog 文档的这一部分找到与您的问题相关的信息。

另外,我应该指出,Datadog 在其文档中显示的唯一 Python 库是datadogpy

于 2016-09-22T12:43:05.770 回答