第 4 章 分布式追踪平台(Tempo)
4.1. 安装分布式追踪平台(Tempo)
Tempo Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
安装分布式追踪平台(Tempo)涉及以下步骤:
- 设置支持的对象存储。
- 安装 Tempo Operator。
- 为对象存储凭据创建 secret。
- 为 TempoStack 实例创建命名空间。
-
创建
TempoStack
自定义资源,以至少部署一个 TempoStack 实例。
4.1.1. 从 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
- 在已安装 Operator 页面的 Details 选项卡中,在 ClusterServiceVersion details 下验证安装 Status 是否为 Succeeded。
-
进入 Operators → OperatorHub 并搜索
- 为您要在后续步骤中创建的 TempoStack 实例创建一个项目: 进入 Home → Projects → Create Project。
在您为 TempoStack 实例创建的项目中,为您的对象存储桶创建一个 secret:进入 Workloads → Secrets → Create → From YAML。
表 4.1. 所需的 secret 参数
存储供应商 Secret 参数
name: tempostack-dev-odf # example
bucket: <bucket_name> # requires an ObjectBucketClaim
endpoint: https://s3.openshift-storage.svc
access_key_id: <data_foundation_access_key_id>
access_key_secret: <data_foundation_access_key_secret>
MinIO
请参阅 MinIO Operator。
name: tempostack-dev-minio # example
bucket: <minio_bucket_name> # MinIO documentation
endpoint: <minio_bucket_endpoint>
access_key_id: <minio_access_key_id>
access_key_secret: <minio_access_key_secret>
Amazon S3
name: tempostack-dev-s3 # example
bucket: <s3_bucket_name> # Amazon S3 documentation
endpoint: <s3_bucket_endpoint>
access_key_id: <s3_access_key_id>
access_key_secret: <s3_access_key_secret>
Microsoft Azure Blob Storage
name: tempostack-dev-azure # example
container: <azure_blob_storage_container_name> # Microsoft Azure documentation
account_name: <azure_blob_storage_account_name>
account_key: <azure_blob_storage_account_key>
Google Cloud Storage on Google Cloud Platform (GCP)
name: tempostack-dev-gcs # example
bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project
key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication
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。
验证
- 使用 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 → Routes 和 Ctrl+F,以搜索
4.1.2. 使用 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 new-project <project_of_tempostack_instance>
使用元数据从标准输入创建项目:
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
在您为 TempoStack 实例创建的项目中,通过运行以下命令之一为您的对象存储桶创建一个 secret:
从 YAML 文件创建 secret:
$ oc apply -f <secret_file>.yaml
从标准输入创建 secret:
$ oc apply -f - << EOF <object_storage_secret> EOF
表 4.2. 所需的 secret 参数
存储供应商 Secret 参数
name: tempostack-dev-odf # example
bucket: <bucket_name> # requires an ObjectBucketClaim
endpoint: https://s3.openshift-storage.svc
access_key_id: <data_foundation_access_key_id>
access_key_secret: <data_foundation_access_key_secret>
MinIO
请参阅 MinIO Operator。
name: tempostack-dev-minio # example
bucket: <minio_bucket_name> # MinIO documentation
endpoint: <minio_bucket_endpoint>
access_key_id: <minio_access_key_id>
access_key_secret: <minio_access_key_secret>
Amazon S3
name: tempostack-dev-s3 # example
bucket: <s3_bucket_name> # Amazon S3 documentation
endpoint: <s3_bucket_endpoint>
access_key_id: <s3_access_key_id>
access_key_secret: <s3_access_key_secret>
Microsoft Azure Blob Storage
name: tempostack-dev-azure # example
container: <azure_blob_storage_container_name> # Microsoft Azure documentation
account_name: <azure_blob_storage_account_name>
account_key: <azure_blob_storage_account_key>
Google Cloud Storage on Google Cloud Platform (GCP)
name: tempostack-dev-gcs # example
bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project
key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication
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 数据。