gpt4 book ai didi

python - 从 docker 发送 ddtrace

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:18 26 4
gpt4 key购买 nike

我正在尝试学习如何使用 docker,但遇到了一些麻烦。我正在使用 docker-compose.yaml 文件来运行连接到 mysql 容器的 python 脚本,并且我正在尝试使用 ddtrace 将跟踪发送到 datadog。我正在使用来自 this github page from datadog 的以下图片

ddagent:
image: datadog/docker-dd-agent
environment:
- DD_BIND_HOST=0.0.0.0
- DD_API_KEY=invalid_key_but_this_is_fine
ports:
- "127.0.0.1:8126:8126"

我的 docker-compose.yaml 看起来像

version: "3"
services:
ddtrace-test:
build: .
volumes:
- ".:/app"
links:
- ddagent

ddagent:
image: datadog/docker-dd-agent
environment:
- DD_BIND_HOST=0.0.0.0
- DD_API_KEY=<my key>
ports:
- "127.0.0.1:8126:8126"

然后我运行命令 docker-compose run --rm ddtrace-test python test.py,其中 test.py 看起来像

from ddtrace import tracer

@tracer.wrap('test', 'test')
def foo():
print('running foo')

foo()

当我运行命令时,返回

Starting service---reprocess_ddagent_1 ... done
foo
cannot send spans to localhost:8126: [Errno 99] Cannot assign requested address

我不确定这个错误是什么意思。当我使用我的 key 并从本地而不是通过 docker 图像运行时,它工作正常。这里可能出了什么问题?

最佳答案

容器是关于隔离的,所以在容器中“localhost”意味着在容器内部,所以 ddtrace-test 无法在他的容器中找到 ddagent。您有两种方法可以解决此问题:

  1. network_mode: host 放在 ddtrace-test 中,这样他将绑定(bind)到主机的网络接口(interface),跳过网络隔离
  2. 将 ddtrace-test 更改为使用“ddagent”主机而不是本地主机,因为可以使用他们的名称访问 docker-compose 服务

关于python - 从 docker 发送 ddtrace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com