资讯详情

资讯详情

Grafana Tempo 部署教程:用 Tempo Operator 将 TempoStack 接入 Grafana 数据源

Grafana Tempo 部署教程用 Tempo Operator 将 TempoStack 接入 Grafana 数据源【免费下载链接】tempoGrafana Tempo is a high volume, minimal dependency distributed tracing backend.项目地址: https://gitcode.com/GitHub_Trending/tempo1/tempoGrafana Tempo 是 Grafana Labs 推出的高吞吐、低依赖的分布式链路追踪后端。本文聚焦于一个具体而实用的集成场景在使用 Tempo Operator 于 Kubernetes / OpenShift 上完成TempoStack实例部署之后如何将追踪数据接入 Grafana 进行查询与可视化。读完本文你将掌握两种接入路径——通过 Grafana Operator 自动创建数据源以及手动配置带网关gateway或不带网关的数据源并理解 OIDC 认证、多租户 URL 语义与 query-frontend 访问方式等关键细节。背景Tempo Operator 与 Grafana 的对接方式Tempo Operator 允许你在 Kubernetes 与 OpenShift 集群上配置、安装、升级和运维 Grafana Tempo。其管理的核心资源是TempoStack自定义资源Custom ResourceCR你可以通过它声明式地指定存储后端、资源配额、多租户、网关等能力详见operator 部署总览。将TempoStack接入 Grafana 有两种基本思路自动创建如果 Grafana 实例本身由 Grafana Operator 管理可以让 Tempo Operator 直接创建一个GrafanaDatasource自定义资源由 Grafana Operator 接管数据源的生命周期。手动配置在 Grafana 的数据源界面中手工添加 Tempo 数据源此时需要根据TempoStack是否启用 gateway 来决定 URL 与认证方式。方式一通过 Grafana Operator 自动创建数据源如果你的 Grafana 实例是由 Grafana Operator 管理的可以在TempoStack中启用observability.grafana.createDatasource让 Tempo Operator 自动生成GrafanaDatasource自定义资源apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack spec: observability: grafana: createDatasource: true使用该方式时需要注意一个前置条件必须在 Tempo Operator 的配置中启用特性开关featureGates.grafanaOperator否则createDatasource不会生效。这种方式的好处是完全声明式数据源随TempoStack一起创建无需手工填写 URL 与认证信息后续更新也由 Operator 统一管理。方式二手动配置数据源如果不想依赖 Grafana Operator或者你的 Grafana 部署方式不在其管理范围内可以手工创建 Tempo 数据源。此时需要先明确一个决策点TempoStack是否启用了 gateway。启用了 gateway需要在 Grafana 中提供认证信息并填写期望查看追踪数据的租户tenant所对应的 URL。未启用 gateway需要确保 Grafana 能够访问到query-frontend的端点并将该端点直接作为数据源 URL。使用 gateway带 OIDC 认证gateway 是 Tempo Operator 部署的可选组件它通过向 OAuth/OIDC 端点校验请求主体的身份为 Tempo 的 distributor例如推送 span与 query-frontend例如查询链路提供安全访问。gateway 暴露了 Tempo 的全部查询端点因此可以将 gateway 端点直接作为 Grafana 的 Tempo 数据源 URL。OIDC 配置需要clientID和clientSecret两个字段它们由TempoStack管理员提前通过 Kubernetes Secret 提供。如果 Grafana 配置了某个 OAuth 提供方如 generic OAuth那么部署带 gateway 的TempoStack时应使用相同的clientID与clientSecret。首先创建 OIDC 凭据 SecretapiVersion: v1 kind: Secret metadata: name: oidc-test stringData: clientID: clientID used for grafana authentication clientSecret: clientSecret used for grafana authentication type: Opaque接着部署启用 gateway 的TempoStack。下面的示例开启了template.gateway并将租户test-oidc与上面的 Secret 关联起来配置了 OIDC 的签发者issuer、回调地址与用户名声明spec: template: gateway: enabled: true tenants: mode: static authentication: - tenantName: test-oidc tenantId: test-oidc oidc: issuerURL: http://dex:30556/dex redirectURL: http://tempo-foo-gateway:8080/oidc/test-oidc/callback usernameClaim: email secret: name: oidc-test说明上例中issuerURL指向一个示例的 Dex 实例http://dex:30556/dexredirectURL需要指向 gateway 服务的 OIDC 回调端点格式为http://gateway-service:8080/oidc/tenant/callback。更完整的多租户部署示例含静态 RBAC 的roleBindings/roles配置、OpenShift 模式下的 OAuth 与SubjectAccessReview授权、读写数据的ClusterRole/ClusterRoleBinding可参考多租户部署文档。数据源 URL 需要填写带租户路径的 gateway 端点http://HOST:PORT/api/traces/v1/{tenant}/tempo/其中{tenant}是租户名称。例如上例中 gateway 服务名为tempo-foo-gateway、端口为8080、租户为test-oidc时URL 即为http://tempo-foo-gateway:8080/api/traces/v1/test-oidc/tempo/。该 URL 是租户感知的——多租户场景下不同租户需要各自的数据源或不同的路径段Tempo 依靠X-Scope-OrgID头进行租户隔离。接下来配置认证方式。将Authentication Method设置为Forward Oauth Identity转发 OAuth 身份并使用与 gateway 及 OAuth 配置相同的clientID和clientSecret。这样 Grafana 会把当前登录用户的access_token转发给 gateway由 gateway 完成客户端身份校验。如果你希望直接使用 Bearer Token 而不是转发 OAuth 身份也可以将 token 放入Authorization请求头中如下所示两种认证方式各有适用场景Forward OAuth Identity适用于 Grafana 本身已接入 OAuth 的环境能够把用户身份无缝透传给 gateway实现“一次登录、按用户授权”而Bearer token 方式更适合固定服务账号或长期有效的 token配置简单直接。不使用 gateway如果不启用 gateway则需要保证 Grafana 能够访问到query-frontend的端点。在 Kubernetes 上通常通过创建 Ingress 暴露在 OpenShift 上则可以创建 Route。拿到端点后直接在创建 Tempo 数据源时把它填入URL字段即可http://query-frontend-endpoint:port这种方式省去了 OIDC 相关的配置适合集群内部网络可信、或者由外部手段如网络策略、Service Mesh负责访问控制的场景。需要注意的是不带 gateway 意味着没有 OIDC 身份校验层租户隔离将完全依赖X-Scope-OrgID头与后端 RBAC/多租户策略。验证数据源是否可用无论采用哪种方式配置完成后都可以在 Grafana 的 Explore 页面选择该 Tempo 数据源通过 TraceID 查询或执行 TraceQL 检索来验证连通性。如果查询报认证错误优先检查clientID/clientSecret是否与 Grafana OAuth 配置一致URL 中的租户名是否与TempoStack中tenants.authentication[].tenantName一致gateway 的 OIDCissuerURL与redirectURL是否能被 gateway 与 Grafana 双向访问未启用 gateway 时Grafana 所在网络是否可达 query-frontend 端点。小结将 Tempo Operator 部署的TempoStack接入 Grafana 数据源核心在于选择正确的接入路径场景推荐方式URL 形态认证Grafana 由 Grafana Operator 管理createDatasource: true由 Operator 自动生成由 Operator 管理启用 gateway手动配置http://HOST:PORT/api/traces/v1/{tenant}/tempo/Forward OAuth Identity 或 Authorization Bearer未启用 gateway手动配置http://query-frontend-endpoint:port视环境而定通常依赖网络层控制三种路径最终都指向同一个目标让 Grafana 用户以熟悉的界面查询、可视化 Tempo 中存储的分布式链路数据。结合多租户文档中的 RBAC 与 OIDC 配置你可以在生产环境构建出安全、多租户、可观测的完整链路追踪体系。【免费下载链接】tempoGrafana Tempo is a high volume, minimal dependency distributed tracing backend.项目地址: https://gitcode.com/GitHub_Trending/tempo1/tempo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →