Grafana Tempo 多租户和 Metrics-generator 的设置

原文链接: Grafana Tempo 多租户和 Metrics-generator 的设置

什么是 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-multitenantdocker-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_generatoroverrides 的配置

在这里插入图片描述

Grafana 查询

如下图所示, 在 TraceQL 中输入 {} 可以查出所有的的 span 数据
在这里插入图片描述

如下所示是 Service Graph 的视图
在这里插入图片描述

点击相应的 metrics 就会自动打开右边的与之关联的 metrics 视图

在这里插入图片描述

一些错误

  1. No service graph data found

在这里插入图片描述

原因:

  1. Grafana 没有设置 metricsSummary
  2. tempo 配置文件中 metrics_generatoroverrides 配置错误

在示例项目 otel-collector-multitenant 中的配置为

在这里插入图片描述

  1. 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

在这里插入图片描述

### 使用Grafana Tempo进行分布式追踪 #### 配置Tempo作为追踪后端 为了实现高效的分布式追踪,Tempo被设计成一个开源且高度可扩展的解决方案[^3]。其核心优势在于仅需对象存储即可运行,并支持多种开放标准协议,比如Jaeger、Zipkin以及OpenTelemetry。这意味着开发者可以灵活选择最适合自身环境的数据传输方式。 ```yaml # tempo.yaml配置示例 storage: trace: backend: s3 s3: bucket_name: my-trace-bucket endpoint: http://minio.example.com/ ``` 此段代码展示了如何设置S3作为持久化层来保存跟踪记录[^1]。 #### 整合Prometheus与Loki 除了基本的日志管理能力外,当与PrometheusLoki配合使用时,能够进一步增强系统的可观测性。特别是对于那些已经依赖这些组件构建监控体系的企业而言,引入Tempo几乎不需要额外的成本或复杂的改动就能获得全面的服务调用链路分析功能[^5]。 #### 启动并验证服务图谱 一旦完成上述准备工作,在Grafana Explore界面下就可以看到由Tempo提供的Service Graph服务节点关系图表了。这使得开发人员不仅能看到单次请求的具体路径,还能直观地掌握整个集群内部各部分之间的交互情况[^2]。 ```bash curl -X POST \ -H "Content-Type: application/json" \ -d '{"query": "{traces(serviceName:\\"my-service\\") {traceID}}"}' \ http://localhost:3100/loki/api/v1/query ``` 这段命令用于向Loki查询特定服务名称下的所有追踪ID列表,便于后续深入调查具体实例的表现状况。 #### 实现低成本高效能追踪 得益于独特的无索引架构,即使面对海量级别的追踪事件量,Tempo依然保持出色的响应速度而不必担心性能瓶颈问题。每次查询都基于唯一的追踪标识符来进行定位,从而大大降低了资源消耗的同时提高了检索效率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值