![如何连接容器中运行的 Django 和主机中运行的 Datadog 代理](https://linux22.com/image/1580696/%E5%A6%82%E4%BD%95%E8%BF%9E%E6%8E%A5%E5%AE%B9%E5%99%A8%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%9A%84%20Django%20%E5%92%8C%E4%B8%BB%E6%9C%BA%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%9A%84%20Datadog%20%E4%BB%A3%E7%90%86.png)
我按照 datadog 中的所有说明操作,但无法使其正常工作。到目前为止我已完成的步骤:
我按照跟踪 Docker 应用程序,并使用如下内容配置我的 Django:
DATADOG_TRACE = {
'DEFAULT_SERVICE': 'my-app',
'TAGS': {'env': 'production'},
'AGENT_HOSTNAME': subprocess.check_output("/sbin/ip route | /usr/bin/awk '/default/ { print $3 }'", shell=True).strip(),
}
请注意,我找到了一种从命令中获取主机 IP 的方法ip route
。
但我收到以下错误:
ERROR:cannot send spans to 172.18.0.1:8126: [Errno 111] Connection refused
答案1
所以,我终于搞明白了。Datadog 代理拒绝连接,因为它仅绑定到本地主机。我编辑了文件/etc/datadog-agent/datadog.yaml
并更改了以下内容:
use_dogstatsd: true
bind_host: 0.0.0.0
现在它运行得非常好!