在 Linux 上部署
本指南提供了在 Linux 上安装 Tempo 的分步过程。它假设您拥有 Linux 系统的访问权限,并具有部署需要网络和文件系统访问的服务所需的权限。完成本指南后,您将在单个节点上部署一个 Tempo 实例。
这些说明侧重于单体安装。您也可以通过部署多个二进制文件并使用分布式配置来以分布式模式运行 Tempo。
开始之前
要按照本指南操作,您需要
- 正在运行的 Grafana 实例(参见安装说明)
- Amazon S3 兼容对象存储
- 安装了 Git、Docker 和 docker-compose 插件以测试 Tempo
系统要求
此配置是您可以作为起点使用的示例。您的系统可能需要比下面列出的最低规格更多的资源。生产环境需要额外的调整。
您必须具备部署需要网络和文件系统访问的服务所需的权限。
您的 Linux 系统应至少具备
- 4 个 CPU
- 16 GB 内存
设置对象存储桶
Tempo 使用对象存储作为其追踪存储的后端。它还使用对象存储来存储与系统状态相关的各种数据。
Tempo 也支持使用本地文件系统作为追踪存储的后端。这不推荐用于生产部署。本指南侧重于使用对象存储进行设置。
本示例使用 AWS us-east-1 区域的 Amazon S3 作为您的对象存储。如果您计划使用其他区域或对象存储服务,请更新下面配置文件中的存储字段。目前支持的对象存储后端包括 AWS S3、其他 S3 兼容对象存储以及 Google Cloud 的 GCS。
在配置好对象存储后端后,创建一个名为 grafana-traces-data 的存储桶。本指南的配置文件将引用此存储桶。您可能需要修改存储桶名称以确保其全局唯一。
考虑为您的组织向存储桶添加前缀,例如 myorg-grafana-traces-data,然后用这些存储桶名称替换其余说明中的名称。
安装 Tempo
对于 linux-amd64 安装,在您的 Linux 机器上通过命令行界面运行以下命令。您需要管理员权限来执行此操作,可以以 root 用户身份运行,或者通过 sudo 以具有相应权限的用户身份运行。
下载 Tempo 二进制文件,验证校验和(列在
SHA256SUMS中),并为二进制文件添加网络功能。务必下载适用于您的操作系统和架构的正确安装包curl -Lo tempo_2.2.0_linux_amd64.deb https://github.com/grafana/tempo/releases/download/v2.2.0/tempo_2.2.0_linux_amd64.deb echo e81cb4ae47e1d8069efaad400df15547e809b849cbb18932e23ac3082995535b \ tempo_2.2.0_linux_amd64.deb | sha256sum -c dpkg -i tempo_2.2.0_linux_amd64.deb
创建 Tempo 配置文件
将以下 YAML 配置复制到名为 tempo.yaml 的文件中。
在 admin_client 和存储后端中粘贴您的 S3 凭据。如果您希望为集群指定一个唯一的名称,请添加具有相应名称的 cluster 属性。
有关可用选项的说明,请参阅 Tempo 配置文档。
在以下配置中,Tempo 选项被修改为仅监听 OTLP gRPC 和 HTTP 协议。默认情况下,Tempo 会监听所有兼容的协议。
server:
http_listen_port: 3200
distributor:
receivers:
otlp:
protocols:
http:
grpc:
compactor:
compaction:
block_retention: 48h # configure total trace retention here
metrics_generator:
registry:
external_labels:
source: tempo
cluster: linux-microservices
storage:
path: /var/tempo/generator/wal
remote_write:
- url: https://:9090/api/v1/write
send_exemplars: true
storage:
trace:
backend: s3
s3:
endpoint: s3.us-east-1.amazonaws.com
bucket: grafana-traces-data
forcepathstyle: true
enable_dual_stack: false
# set to false if endpoint is https
insecure: true
access_key: # TODO - Add S3 access key
secret_key: # TODO - Add S3 secret key
wal:
path: /var/tempo/wal # where to store the wal locally
local:
path: /var/tempo/blocks
overrides:
defaults:
metrics_generator:
processors: [service-graphs, span-metrics]注意:在上述配置中,启用了指标生成器,用于从传入的追踪 Span 中生成 Prometheus 指标数据。这些数据被发送到位于
http://prometheus:9090/api/v1/write的 Prometheus 远程写入兼容指标存储(在metrics_generator配置块中)。如果您不想生成 Span 指标,请务必将相关的url参数更改为您自己的 Prometheus 兼容存储实例,或者通过删除metrics_generators_processors来禁用指标生成器。
将配置文件移动到正确的目录
将 tempo.yaml 复制到 /etc/tempo/config.yml
cp tempo.yaml /etc/tempo/config.yml重启 tempo 服务
使用 systemctl 重启服务(根据您安装 Tempo 的方式,可能有所不同)
systemctl start tempo.service您可以将 restart 替换为 stop 来停止服务,如果需要,停止后使用 start 来再次启动服务。
验证您的集群是否正常工作
要验证 Tempo 是否正常工作,请运行以下命令
systemctl is-active tempo您应该看到返回状态为 active。如果不是,请检查配置文件是否正确,然后重启服务。您也可以使用 journalctl -u tempo 查看 Tempo 的日志,以确定是否有任何明显的启动失败原因。
登录到您的存储提供商,并确定已向存储写入文件,从而验证您的存储桶是否已接收到数据。该文件应命名为 tempo_cluster_seed.json。
测试您的安装
Tempo 运行后,您可以使用 K6 with Traces Docker 示例来验证追踪数据是否已发送到 Tempo。此过程会在 Grafana 中设置一个示例数据源,用于从 Tempo 读取数据。
后端存储配置
使用 docker-compose 运行的 Tempo 示例都包含一个 Tempo 版本和 S3 和 GCS 等存储后端。由于 Tempo 是安装并配置了后端存储的,因此您需要修改 docker-compose.yaml 文件,移除 Tempo,并将追踪存储指向已安装的版本。本节包含这些步骤。
网络配置
Docker Compose 使用内部网络桥接连接所有已定义的服务。由于 Tempo 实例作为服务在本地主机上运行,因此您需要本地机器的可解析 IP 地址,以便 Docker 容器可以使用 Tempo 服务。您可以使用 ip addr show 等命令查找 Linux 机器的主机 IP 地址。
步骤
克隆 Tempo 仓库
git clone https://github.com/grafana/tempo.git进入 examples 目录
cd tempo/example/docker-compose/local编辑文件
docker-compose.yaml,删除tempo服务及其所有属性,使第一个定义的服务是k6-tracing。您的docker-compose.yaml开头应如下所示version: "3" services: k6-tracing:编辑
k6-tracing服务,并将ENDPOINT的值更改为运行 Tempo 和 docker compose 的机器的本地 IP 地址,例如10.128.0.104:4317。这是 OTLP gRPC 端口environment: - ENDPOINT=10.128.0.104:4317这确保了从示例应用发送的追踪数据会发送到 Linux 机器上本地运行的 Tempo 服务。
编辑
k6-tracing服务,通过删除以下行移除对 Tempo 的依赖depends_on: tempo保存
docker-compose.yaml文件并退出编辑器。编辑示例中包含的 Tempo 默认 Grafana 数据源。编辑位于
tempo/example/shared/grafana-datasources.yaml的文件,将Tempo数据源的url字段更改为指向运行 Tempo 服务的机器的本地 IP 地址(例如url: http://10.128.0.104:3200)。Tempo 数据源部分应类似于此- name: Tempo type: tempo access: proxy orgId: 1 url: http://10.128.0.104:3200保存文件并退出编辑器。
编辑 Prometheus 配置文件,使其使用 Tempo 服务作为抓取目标。将目标更改为本地 Linux 主机 IP 地址。编辑
tempo/example/shared/prometheus.yaml文件,修改tempo作业,将tempo:3200替换为 Linux 机器的主机 IP 地址。- job_name: 'tempo' static_configs: - targets: [ '10.128.0.104:3200' ]保存文件并退出编辑器。**
启动 docker-compose 文件中定义的三个服务
docker compose up -d使用
docker compose ps验证服务是否正在运行。您应该看到类似如下的内容NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS local-grafana-1 grafana/grafana:9.3.2 "/run.sh" grafana 2 minutes ago Up 3 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp local-k6-tracing-1 ghcr.io/grafana/xk6-client-tracing:v0.0.2 "/k6-tracing run /ex…" k6-tracing 2 minutes ago Up 2 seconds local-prometheus-1 prom/prometheus:latest "/bin/prometheus --c…" prometheus 2 minutes ago Up 2 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcpGrafana 在端口 3000 上运行,Prometheus 在端口 9090 上运行。两者都应绑定到主机。
作为 docker compose manifest 的一部分,Grafana 现在正在您的 Linux 机器上运行,可通过端口 3000 访问。在您的网络浏览器中指向 Linux 机器的端口 3000。如果您正在远程执行此操作,可能需要转发本地端口,例如通过 SSH 转发。
登录后,导航到探索页面,选择 Tempo 数据源并选择搜索选项卡。选择运行查询以列出存储在 Tempo 中的最近追踪数据。选择一个以查看追踪图。
![Use the query builder to explore tracing data in Grafana]()
修改 Tempo 配置,使其指向在 docker compose 中运行的 Prometheus 实例。为此,请编辑位于
/etc/tempo/config.yaml的配置文件,并更改metrics_generator部分下的storage块,使远程写入 URL 为https://:9090。配置部分应如下所示storage: path: /var/tempo/generator/wal remote_write: - url: https://:9090/api/v1/write send_exemplars: true保存文件并退出编辑器。
最后,通过运行以下命令重启 Tempo 服务
sudo systemctl restart tempoTempo 成功重启几分钟后,在探索页面中为 Tempo 数据源选择服务图选项卡。选择运行查询以查看由 Tempo 的指标生成器生成的服务图。
![Service graph sample]()




