使用 Python 与 Jaeger 一体化容器进行 Docker 网络

问题描述 投票:0回答:1

我有三个容器(C、S 和 J)。 C是客户端,S是SQL Server容器,J是J(aeger)。所有三个容器都位于专用网络上。

C 和 S 之间的流量没有问题。从 Docker 主机(在本例中,它是 VirtualBox VM),我可以毫无问题地将指标推送到 J。从 C 尝试将数据从 C 发送到 J 时出现超时。奇怪的是,我可以从 C telnet 到 J 上的 tcp/4317。唉,我无法将 OTLP 数据从 C 发送到 J。

虽然这不是最佳实践(根本不是),但我正在尝试使用 IP 地址 (172.16.x.x/16)。 C、S 和 J 位于同一子网中。这样做只是为了降低复杂性(注意,我无法在基于 Ubuntu 的容器中修改 /etc/hosts)。

最后一个“奇怪”的事情是,我看到“某些东西”将主机名解析为可路由的 IP 地址(具体来说,解析为 DigitalOcean 拥有的块)。这种情况只发生在容器内;它不会发生在 Docker 主机 (VM) 上,也不会发生在运行 VirtualBox VM 的 Windows 笔记本电脑上。

顺便说一句:这是返回的错误(多次直到最终超时):

遇到暂时性错误 StatusCode.DEADLINE_EXCEEDED 正在导出踪迹到172.19.0.3:4317,1s后重试。

python docker networking open-telemetry jaeger
1个回答
0
投票

所以...我在公司环境中工作。我不明白代理服务器是如何相关的,在这里......但我面临的问题最终是由代理服务器引起的。它们是在 Dockerfile 中定义的(最初不是我)。

取消设置这些 ENV 变量“修复”了我的问题。如何/为什么将代理用于不可路由 IP 地址之间的流量(永远不应该离开 Docker 主机)...好吧,我不明白这一点。

希望我的回答对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.