第 4 章 分布式追踪平台(Tempo)
4.1. 安装分布式追踪平台(Tempo)
安装分布式追踪平台(Tempo)涉及以下步骤:
- 设置支持的对象存储。
- 安装 Tempo Operator。
- 为对象存储凭据创建 secret。
- 为 TempoStack 实例创建命名空间。
-
创建
TempoStack
自定义资源,以至少部署一个 TempoStack 实例。
4.1.1. 对象存储设置
在设置受支持的对象存储时,您可以使用以下配置参数。
存储供应商 |
---|
Secret 参数 |
|
MinIO |
请参阅 MinIO Operator。
|
Amazon S3 |
|
Microsoft Azure Blob Storage |
|
Google Cloud Storage on Google Cloud Platform (GCP) |
|
4.1.2. 从 web 控制台安装分布式追踪平台(Tempo)
您可以从 web 控制台的 Administrator 视图安装分布式追踪平台(Tempo)。
先决条件
-
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin
角色的帐户登录。 - 您可以使用支持的对象存储供应商: Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage。
流程
安装 Tempo Operator:
-
进入 Operators
OperatorHub 并搜索 Tempo Operator
。 选择 Tempo Operator,OpenShift Operator for Tempo
Install Install View Operator. 重要这会使用默认预设置来安装 Operator:
-
Update channel
stable -
Installation mode
All namespaces on the cluster -
Installed Namespace
openshift-tempo-operator -
Update approval
Automatic
-
Update channel
- 在已安装 Operator 页面的 Details 选项卡中,在 ClusterServiceVersion details 下验证安装 Status 是否为 Succeeded。
-
进入 Operators
-
为您要在后续步骤中创建的 TempoStack 实例创建一个项目: 进入 Home
Projects Create Project。 在您为 TempoStack 实例创建的项目中,为您的对象存储桶创建一个 secret:进入 Workloads
Secrets Create From YAML。 Amazon S3 和 MinIO 存储的 secret 示例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque
创建 TempoStack 实例。
注意您可以在同一集群中的独立项目中创建多个 TempoStack 实例。
-
进入 Operators
Installed Operators。 -
选择 TempoStack
Create TempoStack YAML view。 在 YAML 视图中,自定义
TempoStack
自定义资源(CR):apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: <secret-name> 1 type: <secret-provider> 2 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
AWS S3 和 MinIO 存储的 TempoStack CR 示例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
本例中部署的堆栈被配置为接收通过 HTTP 和 OpenTelemetry 协议(OTLP)的 Jaeger Thrift,它允许使用 Jaeger UI 可视化数据。
- 选择 Create。
-
进入 Operators
验证
- 使用 Project: 下拉列表选择 TempoStack 实例的项目。
-
进入 Operators
Installed Operators,以验证 TempoStack 实例的 Status 是否为 Condition: Ready。 -
进入 Workloads
Pods,以验证 TempoStack 实例的所有组件 pod 都在运行。 访问 Tempo 控制台:
-
进入 Networking
Routes 和 Ctrl+F,以搜索 tempo
。 - 在 Location 列中,打开 URL 以访问 Tempo 控制台。
选择 Log In With OpenShift,将集群管理员凭证用于 Web 控制台。
注意Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。
-
进入 Networking
4.1.3. 使用 CLI 安装分布式追踪平台(Tempo)
您可以从命令行安装分布式追踪平台(Tempo)。
先决条件
集群管理员具有
cluster-admin
角色的活跃 OpenShift CLI (oc
) 会话。提示-
确保您的 OpenShift CLI (
oc
) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login
:$ oc login --username=<your_username>
-
确保您的 OpenShift CLI (
- 您可以使用支持的对象存储供应商: Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage。
流程
安装 Tempo Operator:
运行以下命令,为 Tempo Operator 创建项目:
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: labels: kubernetes.io/metadata.name: openshift-tempo-operator openshift.io/cluster-monitoring: "true" name: openshift-tempo-operator EOF
运行以下命令来创建 Operator 组:
$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-tempo-operator namespace: openshift-tempo-operator spec: upgradeStrategy: Default EOF
运行以下命令来创建订阅:
$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: tempo-product namespace: openshift-tempo-operator spec: channel: stable installPlanApproval: Automatic name: tempo-product source: redhat-operators sourceNamespace: openshift-marketplace EOF
运行以下命令检查 Operator 状态:
$ oc get csv -n openshift-tempo-operator
运行以下命令,为您将在后续步骤中创建的 TempoStack 实例创建您选择的项目:
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
在您为 TempoStack 实例创建的项目中,运行以下命令来为您的对象存储桶创建一个 secret:
$ oc apply -f - << EOF <object_storage_secret> EOF
Amazon S3 和 MinIO 存储的 secret 示例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque
在您为 TempoStack 实例创建的项目中创建一个 TempoStack 实例。
注意您可以在同一集群中的独立项目中创建多个 TempoStack 实例。
自定义
TempoStack
自定义资源(CR):apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: <secret-name> 1 type: <secret-provider> 2 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
AWS S3 和 MinIO 存储的 TempoStack CR 示例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: project_of_tempostack_instance spec: storageSize: 1Gi storage: secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
本例中部署的堆栈被配置为接收通过 HTTP 和 OpenTelemetry 协议(OTLP)的 Jaeger Thrift,它允许使用 Jaeger UI 可视化数据。
运行以下命令来应用自定义 CR。
$ oc apply -f - << EOF <TempoStack_custom_resource> EOF
验证
运行以下命令,验证所有 TempoStack
组件
的状态
是否为Running
,并且条件
为type: Ready
:$ oc get tempostacks.tempo.grafana.com simplest -o yaml
运行以下命令,验证所有 TempoStack 组件 pod 是否正在运行:
$ oc get pods
访问 Tempo 控制台:
运行以下命令来查询路由详情:
$ export TEMPO_URL=$(oc get route -n <control_plane_namespace> tempo -o jsonpath='{.spec.host}')
-
在网页浏览器中打开
https://<route_from_previous_step>
。 使用 Web 控制台的集群管理员凭证登录。
注意Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。