Pra*_*eek 5 python docker datadog
我想设置 datadog 代理来监视在 docker 容器内运行的 python 应用程序。我创建了标记为 datadog_app:v_1 的 docker 映像。下面是我的 docker 文件:
FROM ubuntu:18.04
WORKDIR /app
RUN apt-get update --no-install-recommends
RUN apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3-setuptools --no-install-recommends
RUN pip3 install Cython
RUN pip3 install ddtrace
RUN apt-get install -y curl
ADD ./datadog_app.py /app/handler.py
RUN DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=my_api_key DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"
CMD ddtrace-run python3 handler.py
Run Code Online (Sandbox Code Playgroud)
以下是 datadog_app.py 文件的代码:
from ddtrace import tracer
import time
@tracer.wrap(service="addition")
def handler():
time.sleep(2)
print(1+2)
handler()
Run Code Online (Sandbox Code Playgroud)
现在,我尝试从“datadog_app:v_1: 交互式图像”运行 docker 容器,并确保使用以下命令公开端口 8126:
docker run -it -p 8126:8126 datadog_app:v_1
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR:ddtrace.internal.writer:failed to send traces to Datadog Agent at http://localhost:8126
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/tenacity/__init__.py", line 407, in __call__
result = fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/ddtrace/internal/writer.py", line 356, in _send_payload
response = self._put(payload, headers)
File "/usr/local/lib/python3.6/dist-packages/ddtrace/internal/writer.py", line 332, in _put
conn.request("PUT", self._endpoint, data, headers)
File "/usr/lib/python3.6/http/client.py", line 1281, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1327, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1276, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.6/http/client.py", line 1042, in _send_output
self.send(msg)
File "/usr/lib/python3.6/http/client.py", line 980, in send
self.connect()
File "/usr/lib/python3.6/http/client.py", line 952, in connect
(self.host,self.port), self.timeout, self.source_address)
File "/usr/lib/python3.6/socket.py", line 724, in create_connection
raise err
File "/usr/lib/python3.6/socket.py", line 713, in create_connection
sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/ddtrace/internal/writer.py", line 458, in flush_queue
self._retry_upload(self._send_payload, encoded, n_traces)
File "/usr/local/lib/python3.6/dist-packages/tenacity/__init__.py", line 404, in __call__
do = self.iter(retry_state=retry_state)
File "/usr/local/lib/python3.6/dist-packages/tenacity/__init__.py", line 361, in iter
raise retry_exc from fut.exception()
tenacity.RetryError: RetryError[<Future at 0x7f32383f0a58 state=finished raised OSError>]
Run Code Online (Sandbox Code Playgroud)
我还尝试运行以下命令:
docker run -it --expose=8126 datadog_app:v_1
Run Code Online (Sandbox Code Playgroud)
但我遇到了同样的错误。我的目标是在包含 python 应用程序的同一容器内运行 datadog-agent。有人可以解释我的代码或运行命令有什么问题吗?
| 归档时间: |
|
| 查看次数: |
3958 次 |
| 最近记录: |