监控 Tempo
Tempo 进行了插桩,以暴露指标、日志和追踪。此外,Tempo 仓库包含一个 mixin,其中包含一组仪表盘、规则和警报。这些一起可以用于监控生产环境中的 Tempo。
插桩
可以收集 Tempo 的指标、日志和追踪来观察其服务和功能。
指标
Tempo 使用 Prometheus 指标进行了插桩,并为大多数服务和后端发出 RED 指标。RED 指标是一种用于监控微服务的标准化格式,其中 R 代表请求 (Requests),E 代表错误 (Errors),D 代表持续时间 (Duration)。
Tempo mixin 使用这些指标提供了多个仪表盘。
日志
Tempo 以 key=value
( logfmt) 格式发出日志。
追踪
Tempo 使用 OpenTelemetry SDK 进行追踪插桩。Tempo 的完整读取路径和部分写入路径都已进行追踪插桩。
您可以使用环境变量配置追踪器。要启用追踪,请设置以下其中一个变量:OTEL_EXPORTER_OTLP_ENDPOINT
或 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
。
OpenTelemetry SDK 默认使用 OTLP/HTTP,可以使用 OTEL_EXPORTER_OTLP_PROTOCOL
进行配置。
Polling
Tempo 通过定期 polling 后端来维护对后端状态的了解。目前只有两个组件需要这种了解,因此也只有这两个组件会 polling 后端:compactor 和 querier。
请参阅 使用 polling 监控后端状态 以了解 Tempo 的相关信息。
仪表盘
Tempo mixin 在 yamls
文件夹中包含四个 Grafana 仪表盘,您可以下载这些仪表盘并将其导入到您的 Grafana UI 中。当您在 Kubernetes (k8s) 环境中运行 Tempo 且采集的指标具有 cluster
和 namespace
标签时,这些仪表盘效果很好。
Tempo 读取仪表盘
此仪表盘可用作
tempo-reads.json
。
读取仪表盘提供了 Tempo 查询路径上的请求、错误和持续时间 (RED) 信息。每个查询都会涉及网关 (Gateway)、Tempo-Query、查询前端 (Query-Frontend)、Querier、Ingester、后端以及(如果存在)缓存 (Cache)。
使用此仪表盘监控上述每个组件的性能,并决定每个部署中的副本数量。
Tempo 写入仪表盘
此仪表盘可用作
tempo-writes.json
。
写入仪表盘提供了 Tempo 写入/摄取路径上的 RED 信息。一个写入查询会涉及网关 (Gateway)、Distributor、Ingester 和后端。此仪表盘还提供了 Compactor 对后端执行的操作次数信息。
使用此仪表盘监控上述每个组件的性能,并决定每个部署中的副本数量。
Tempo 资源仪表盘
此仪表盘可用作
tempo-resources.json
。
资源仪表盘提供了 CPU
、Container Memory
和 Go Heap Inuse
的信息。此仪表盘对于 Tempo 不同组件的资源预配置很有用。
使用此仪表盘查看是否有任何组件接近其分配的限制。
Tempo 操作仪表盘
此仪表盘可用作
tempo-operational.json
。
Tempo 操作仪表盘值得特别提及,因为它可能是仪表盘反模式的堆砌。它庞大而复杂,不使用 jsonnet
,并且在一个地方显示了过多的指标。对于刚开始使用的人来说,RED 仪表盘是学习如何以不透明方式监控 Tempo 的好地方。
此仪表盘包含在 Tempo 仓库中,原因有二:
- 此仪表盘提供了一系列指标,供其他操作员在运行 Tempo 时考虑监控。
- 我们希望在我们的内部基础设施中使用此仪表盘,因此我们通过供应商引入
tempo-mixin
来实现此目的。
规则和警报
规则和警报在仓库的已编译 mixin 中的 YAML 文件中提供。
要设置警报,请下载提供的 JSON 文件,并将其配置用于您的 Prometheus 监控服务器。
查看运行手册,了解可以采取哪些步骤来解决触发的警报。