【APM】在Kubernetes中,使用Helm安装tempo 2.4.1

1、Tempo 简介

Grafana Tempo 是由 Grafana Labs 开源的分布式追踪系统,它作为可观测性栈的一部分,专注于提供高效、可扩展的追踪数据收集、存储和查询功能。Tempo 设计用于处理大规模的分布式应用程序中的追踪数据,帮助开发者理解服务间的调用关系、性能瓶颈和错误传播路径,从而提高系统的可靠性和性能。

Grafana Tempo 简介:

核心特性:

高性能存储: Tempo 使用对象存储(如 AWS S3、GCP GCS 或 Azure Blob Storage)来低成本、长时间地存储追踪数据,同时利用本地缓存提高查询速度。

高效压缩: 通过高效的块压缩和索引技术,大幅减少追踪数据的存储空间需求。

简易集成: 支持 OpenTelemetry、Jaeger、Zipkin 等多种追踪格式,便于与现有系统集成。

查询优化: 提供快速查询接口,即使是数 TB 的数据也能迅速检索。

与 Grafana 生态集成: 无缝集成 Grafana 数据可视化平台,便于创建追踪数据的可视化面板和告警。

常用场景:

微服务监控: 在复杂的微服务架构中,Tempo 能够帮助追踪服务间的调用链路,识别慢请求和故障点,这对于理解服务间依赖、优化服务性能至关重要。

性能诊断: 当系统响应变慢或出现故障时,开发和运维团队可以利用 Tempo 追踪事务,快速定位问题发生的源头,无论是数据库查询延迟、网络延迟还是代码逻辑问题。

故障排查: 在分布式系统中,故障可能涉及多个服务和层次,Tempo 提供了一种手段来追溯整个调用链,加速故障排查过程。

服务优化: 通过对追踪数据的持续分析,识别性能瓶颈,为服务优化和架构调整提供数据支持。

用户体验监控: 结合前端追踪数据,可以完整地重建用户会话的追踪记录,了解用户在使用应用过程中的实际体验,辅助提升产品体验。

安全审计: 分析追踪数据还能帮助识别潜在的安全威胁,如异常的访问模式或未经授权的访问尝试。

结合 Grafana 的可视化能力,Tempo 不仅能提供追踪数据的详细视图,还能通过丰富的图表和报警功能,将追踪洞察转化为可操作的智能,助力 DevOps 团队更好地管理现代云原生应用的复杂性。

2、Github地址

https://github.com/grafana/tempo

3、Helm安装

Helm是一个用于Kubernetes的应用程序包管理工具,它简化了Kubernetes应用的部署和管理过程。Helm的工作原理类似于Linux中的apt或者yum,但专门针对Kubernetes资源

3.1 添加Helm源

bash 复制代码
helm repo add grafana  https://grafana.github.io/helm-charts

3.2 下载chart包

bash 复制代码
helm pull grafana/tempo-distributed --version 1.9.9
tar -zxvf tempo-distributed-1.9.9.tgz

3.3 安装

bash 复制代码
helm upgrade --install tempo   --set global.dnsService=coredns --set minio.enabled=true --set minio.persistence.size=200Gi    --set gateway.enabled=true   --set traces.otlp.grpc.enabled=true         tempo-distributed/ -n trace

注:

--set global.dnsService=coredns 覆盖默认kube-dns值,默认是kube-dns(Kubernetes dns服务器)

--set minio.enabled=true 开启minio持久化存储数据

--set gateway.enabled=true 开启网关服务

--set traces.otlp.grpc.enabled=true 开启otlp协议,强烈建议开启,之后方便opentelemetry连接

常见服务集成配置连接:

grafana datasource:http://tempo-gateway.trace.svc.cluster.local

opentelemetry:tempo-distributor-discovery.trace.svc.cluster.local:4317

3.4 组件介绍

Tempo Server: 这是 Grafana Tempo 的核心组件,负责接收、处理和存储追踪数据。它支持从各种追踪源(如 Jaeger、OpenTelemetry 等)接收数据,并将数据高效地存储到后端存储系统中(通常是对象存储服务,如 AWS S3、Google Cloud Storage 或 Azure Blob Storage)。Tempo Server 还提供了查询 API,用于检索存储的追踪数据。

Distributor: 负责接收追踪数据并对其进行分配,实现负载均衡。它确保高并发写入时的服务稳定性。

Ingester: 处理从 Distributor 接收到的数据,对追踪数据进行压缩、归并和临时存储,之后将处理后的数据持久化到长期存储。

Querier: 负责处理追踪数据查询请求。当需要检索追踪数据时,它从对象存储中读取数据,并返回给用户或前端应用(如 Grafana)。

Compactor: 定期合并存储在对象存储中的小数据块,以优化存储效率和查询性能。

Gateway/Query Frontend: 这个组件作为查询请求的入口,可能负责路由查询请求到合适的 Querier,提供额外的安全控制或负载均衡。

相关推荐
daxian_am4612 小时前
k8s image error
java·数据库·kubernetes
Gogeof2 小时前
云原生化 - 旅程(简约版)
微服务·云原生
爱吃龙利鱼2 小时前
网络基础知识笔记(四)
运维·网络·笔记·云原生·智能路由器
tangdou3690986553 小时前
Docker系列-超级详细教你Linux安装并使用docker compose,如何使用docker-compose安装sqlserver
docker·容器·sql server
tangdou3690986553 小时前
手把手非常详细图文并茂教你 Docker 部署 SQL Server
docker·容器·sql server
Gogeof4 小时前
云原生化 - 工具镜像(简约版)
微服务·云原生·debug·工具
问道飞鱼5 小时前
kubernets资源类型service详细介绍
云原生·service·kubernets
福大大架构师每日一题14 小时前
20.1 分析pull模型在k8s中的应用,对比push模型
云原生·容器·kubernetes
飘逸高铁侠16 小时前
docker export/import 和 docker save/load 的区别
docker·容器·eureka
bestcxx19 小时前
(十八)、登陆 k8s 的 kubernetes-dashboard &更多可视化工具
云原生·容器·kubernetes