菜单
文档面包屑箭头 Grafana Tempo面包屑箭头 配置面包屑箭头 网络选项面包屑箭头 配置 sidecar 代理
开源

使用 sidecar 代理运行分布式 Tempo

您可以通过 sidecar 代理路由 Pod 间的 gRPC 流量,以满足自定义安全、路由或日志记录等要求。常见示例包括 Envoy、Nginx、Traefik 或 Istio 和 Linkerd 等服务网格。

Tempo Pod 如何通信

Tempo Pod 使用 gRPC 进行通信。

分发器(distributor)和写入器(ingester)等不同组件通过一个共享环查找彼此,该共享环包含 Pod 列表、它们的角色及其地址。Pod 在启动时将其地址和监听端口发布到环中,并在退出时注销自己。

整体网络如下所示

Tempo distributed network overview

可以通过访问分发器上的 /ingester/ring URL 来查看写入器的低级环数据。它看起来像这样

Ring status with default port

默认情况下,gRPC 流量使用端口 9095,但可以通过为每个需要的 Pod 自定义 grpc_listen_port 来更改此设置。

yaml
server:
  grpc_listen_port: 12345

环内容反映了新的端口

Ring status with updated ports

使用代理运行 Tempo

某些安装要求 Pod 间的 gRPC 流量通过 sidecar 代理运行。使用代理运行 Tempo 需要为每个 Pod 设置两个端口:一个用于 Tempo 进程,一个用于 sidecar。此外,环内容必须反映代理的端口,以便来自其他 Pod 的流量通过代理。

整体网络如下所示

Tempo distributed network overview

这不能通过像上一个示例中那样设置相同的 grpc_listen_port 来实现。相反,我们需要写入器监听端口 A,但广播自身使用端口 B。这通过自定义写入器的 lifecycler 端口来实现

yaml
ingester:
   lifecycler:
       port: 12345

现在,写入器正在监听端口 9095 上的常规流量,但分发器将把流量路由到其端口 12345。

Metrics-generator 代理

您可以在 metrics-generator 中自定义 lifecycler 端口。要为 metrics-generator 设置实例端口,请使用此配置

yaml
metrics_generator:
  ring:
    instance_port: 12345

12345 替换为正确的端口号。