什么是 Tempo
Grafana Tempo 是一个开源的、易于使用且高扩展性的分布式追踪后端。Tempo 允许你搜索追踪、从 span 生成指标(metrics),并将你的追踪数据与日志和指标关联起来。 Tempo 成本高效,仅需对象存储即可运行。Tempo 与 Grafana、Mimir、Prometheus 和 Loki 深度集成。你可以将 Tempo 与开源的追踪协议一起使用,包括 Jaeger、Zipkin 或 OpenTelemetry。
了解 Grafana Tempo: Quick start for Tempo
Grafana Tempo 多租户的使用
多租户也就是对应着 Grafana 中的 Organization, 比如在实际的应用中,一个项目使用一个 organization, 那么每个项目生成的 span 数据就会存放在不同的文件夹下.
在示例项目 otel-collector-multitenant 中我们, 当我们 使用 docker compose up -d
拉起项目时, 会有如下的容器:
我们使用命令 docker exec -it otel-collector-multitenant-tempo-1 sh
进入容器内部后, 可以查看到相应的文件夹被创建了.
关于如何设置, 可以参考官方向导: Enable multi-tenancy
在示例项目 otel-collector-multitenant 的 docker-compose.yaml
文件中, 是做如下设置的:
在 otel-collector 的配置文件 otel-collector.multitenant.yaml
中,相应的设置如下
然后在 Grafana 的 Tempo data sources 中配置 HTTP headers , 如下所示. 这样相应的organization 就只能看到自己相关的 Span 数据了.
启用 Metrics-generator
可以参考 Metrics-generator 的官方文档了解,详细了解其功能.
在示例项目 otel-collector-multitenant 中的配置, 主要是配置 tempo.yaml
中有关 metrics_generator 和 overrides 的配置
Grafana 查询
如下图所示, 在 TraceQL 中输入 {}
可以查出所有的的 span 数据
如下所示是 Service Graph 的视图
点击相应的 metrics 就会自动打开右边的与之关联的 metrics 视图
一些错误
- No service graph data found
原因:
- Grafana 没有设置 metricsSummary
- tempo 配置文件中 metrics_generator 和 overrides 配置错误
在示例项目 otel-collector-multitenant 中的配置为
- field defaults not found in type overrides.legacyConfig
原因: 当使用 docker-compose 平繁的更改配置文件后, 可能出现这个问题, 一般当使用 Docker 来安装, 并且更改了配置文件时最保险的方式是使用下面的命令来使配置文件生效.
docker compose stop
docker compose rm
docker compose up -d
或者对单独的一个 container 进行移除后再创建 (推荐)
比如你只修改了 Tempo 的配置文件, 那么可以使用下面的命令来使这个单独的配置生效
docker container stop otel-collector-multitenant-tempo-1
docker container rm otel-collector-multitenant-tempo-1
docker compose up -d
其它
另外可以参照 Tempo data source 的配置说明: Trace to metrics
评论区