使用 Jaeger Agent 的优势

Advantages of using Jaeger Agent

所以我正在探索 Jaeger for Tracing,我看到我们可以直接将跨度从客户端发送到 HTTP 中的收集器(端口:14268),如果是这样,那么使用 jaeger 代理的优势是什么。

何时使用 Jaeger Agent 方法以及何时使用直接 HTTP 方法。使用直接收集器方法的缺点是什么

来自官方FAQ (https://www.jaegertracing.io/docs/latest/faq/#do-i-need-to-run-jaeger-agent):

jaeger-agent 并不总是必要的。 Jaeger 客户端库可以配置为将跟踪数据直接导出到 jaeger-collector。但是,以下是推荐运行jaeger-agent的原因:

  • 如果我们希望 Jaeger 客户端库将跟踪数据直接发送给收集器,我们必须为它们提供 URL HTTP 端点。这意味着我们的应用程序需要包含此参数的额外配置,特别是如果我们 运行 多个 Jaeger 安装(例如,在不同的可用性区域或区域)并希望将数据发送到附近的安装。相反,当使用代理时,库不需要额外的配置,因为代理总是可以通过本地主机访问。它充当边车并将请求代理到适当的收集器。
  • 代理可以配置为通过向跨度添加额外的标签(例如当前区域、区域等)来使用特定于基础架构的元数据来丰富跟踪数据。如果代理 运行 作为主机守护进程,它将被同一主机上的所有应用程序 运行 共享。如果代理 运行 作为真正的 sidecar,即每个应用程序一个,它可以提供额外的功能,例如强身份验证、多租户(参见 this blog post)、pod 名称等。 如果我们希望 Jaeger 客户端库使用在收集器中集中配置的采样策略,这只能通过在代理上使用 /sampling HTTP 端点来实现。没有技术原因不能直接在收集器中实现此端点,只是 not done yet.
  • 代理允许对收集器实施流量控制。如果我们在数据中心有数千台主机,每个 运行 个应用程序,并且每个应用程序都直接向收集器发送数据,那么每个收集器可能无法处理太多打开的连接。代理可以使用较少的连接负载平衡此流量。