1.3. 启用 Observability 服务
当您在 hub 集群上启用 Observability 服务时,multicluster-observability-operator 会监视新的受管集群,并将指标和警报集合服务自动部署到受管集群。您可以使用指标并配置 Grafana 仪表板,使集群资源信息可见,帮助您保存成本并防止服务中断。
使用 Observability 组件监控受管集群的状态,也称为 multicluster-observability-operator pod。
需要的访问权限: 集群管理员、open-cluster-management:cluster-manager-admin 角色或 S3 管理员。
1.3.1. 先决条件 复制链接链接已复制到粘贴板!
- 您必须安装 Red Hat Advanced Cluster Management for Kubernetes。如需更多信息,请参阅在线安装。
-
如果您不想使用平台默认
storageClass,则必须在MultiClusterObservability自定义资源中指定storageConfig.storageClass字段。 - 需要直接网络访问 hub 集群。不支持对负载均衡器和代理的网络访问。如需更多信息,请参阅网络。
您必须配置对象存储来创建存储解决方案。
- 重要:当您配置对象存储时,请确保满足敏感数据持久时所需的加密要求。Observability 服务使用 Thanos 支持、稳定的对象存储。您可能无法通过多个 Red Hat Advanced Cluster Management Observability 安装共享对象存储存储桶。因此,为每个安装提供单独的对象存储存储桶。
Red Hat Advanced Cluster Management 支持带有稳定对象存储的以下云供应商:
- Amazon Web Services S3 (AWS S3)
- Red Hat Ceph (S3 compatible API)
- Google Cloud Storage
- Azure 存储
- Red Hat OpenShift Data Foundation,以前称为 Red Hat OpenShift Container Storage
- Red Hat OpenShift on IBM Cloud
1.3.2. 使用命令行界面启用 Observability 复制链接链接已复制到粘贴板!
通过创建 MultiClusterObservability 自定义资源实例来启用 Observability 服务。在启用 Observability 前,请参阅 Observability pod 容量请求 以了解更多信息。
备注:
-
当在由 Red Hat Advanced Cluster Management 管理的 OpenShift Container Platform 受管集群上启用或禁用 Observability 时,observability 端点 Operator 会添加额外的
alertmanager配置来自动重启本地 Prometheus 来更新cluster-monitoring-config配置映射。 -
Observability 端点 Operator 通过添加自动重启本地 Prometheus 的额外
alertmanager配置来更新cluster-monitoring-config配置映射。当您在 OpenShift Container Platform 受管集群中插入alertmanager配置时,配置会删除与 Prometheus 指标的 retention 字段相关的设置。
完成以下步骤以启用 Observability 服务:
- 登录到您的 Red Hat Advanced Cluster Management hub 集群。
使用以下命令为 Observability 服务创建一个命名空间:
oc create namespace open-cluster-management-observability
oc create namespace open-cluster-management-observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 pull-secret。如果在
open-cluster-management命名空间中安装了 Red Hat Advanced Cluster Management,请运行以下命令:DOCKER_CONFIG_JSON=`oc extract secret/multiclusterhub-operator-pull-secret -n open-cluster-management --to=-`
DOCKER_CONFIG_JSON=`oc extract secret/multiclusterhub-operator-pull-secret -n open-cluster-management --to=-`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命名空间中没有定义
multiclusterhub-operator-pull-secret,请运行以下命令将openshift-config命名空间中的pull-secret复制到open-cluster-management-observability命名空间中:DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-`
DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
open-cluster-management-observability命名空间中创建 pull-secret:oc create secret generic multiclusterhub-operator-pull-secret \ -n open-cluster-management-observability \ --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \ --type=kubernetes.io/dockerconfigjsonoc create secret generic multiclusterhub-operator-pull-secret \ -n open-cluster-management-observability \ --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \ --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重要: 如果您使用 OpenShift Container Platform 文档修改集群的全局 pull secret,请务必更新 Observability 命名空间中的全局 pull secret。如需了解更多详细信息 ,请参阅更新全局 pull secret。
为您的云供应商的对象存储创建 secret。您的 secret 必须包含存储解决方案的凭证。例如,运行以下命令:
oc create -f thanos-object-storage.yaml -n open-cluster-management-observability
oc create -f thanos-object-storage.yaml -n open-cluster-management-observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看以下受支持对象存储的 secret 示例:
对于 Amazon S3 或 S3 兼容,您的 secret 可能类似以下文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 输入没有协议部分的 URL。输入您可能类似以下 URL 的 Amazon S3 端点 URL:
s3.us-east-1.amazonaws.com。
如需了解更多详细信息,请参阅 Amazon Simple Storage Service 用户指南。
对于 Google Cloud Platform,您的 secret 可能类似以下文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需了解更多详细信息,请参阅 Google Cloud Storage。
对于 Azure,您的 secret 可能类似以下文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用
msi_resource路径,则端点身份验证通过使用 system-assigned 受管身份完成。您的值必须类似以下端点:https://<storage-account-name>.blob.core.windows.net。
如果您使用
user_assigned_id路径,则端点身份验证通过使用用户分配的受管身份完成。当您使用user_assigned_id时,msi_resource端点的默认值为https:<storage_account>.<endpoint>。如需了解更多详细信息,请参阅 Azure Storage 文档。注 :如果您将 Azure 用作 Red Hat OpenShift Container Platform 集群的对象存储,则不支持与集群关联的存储帐户。您必须创建新存储帐户。
对于 Red Hat OpenShift Data Foundation,您的 secret 可能类似以下文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 输入没有协议部分的 URL。输入您的 Red Hat OpenShift Data Foundation 端点的 URL,它可能类似以下 URL:
example.redhat.com:443。
如需了解更多详细信息,请参阅 Red Hat OpenShift Data Foundation。
- 对于 IBM 上的 Red Hat OpenShift (ROKS),您的 secret 可能类似以下文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 输入没有协议部分的 URL。输入您的 Red Hat OpenShift Data Foundation 端点的 URL,它可能类似以下 URL:
example.redhat.com:443。如需了解更多详细信息,请参阅 IBM 云文档 Cloud Object Storage。务必使用服务凭据来连接对象存储。如需了解更多详细信息,请参阅 IBM Cloud 文档,云对象存储和服务凭证。
1.3.2.1. 为 AWS 安全令牌服务配置存储 复制链接链接已复制到粘贴板!
对于 Amazon S3 或 S3 兼容存储,您还可以使用由 AWS 安全令牌服务(AWS STS)生成的简短的、有有限权限的凭证。如需了解更多详细信息,请参阅 AWS 安全令牌服务 文档。
使用 AWS 安全服务生成访问密钥需要以下额外步骤:
- 创建一个 IAM 策略,限制对 S3 存储桶的访问。
- 使用信任策略创建 IAM 角色,为 OpenShift Container Platform 服务帐户生成 JWT 令牌
- 为需要访问 S3 存储桶的 Observability 服务帐户指定注解。您可以在 Set 环境 步骤中找到如何使用 Red Hat OpenShift Service on AWS (ROSA)集群中的 Observability 的示例。如需了解更多详细信息,请参阅 Red Hat OpenShift Service on AWS (ROSA),以及 ROSA with STS explained 了解有关使用 STS 令牌的要求和设置的信息。
1.3.2.2. 使用 AWS 安全服务生成访问密钥 复制链接链接已复制到粘贴板!
完成以下步骤,使用 AWS 安全服务生成访问密钥:
设置 AWS 环境。运行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令创建 S3 存储桶:
aws s3 mb s3://$S3_BUCKET
aws s3 mb s3://$S3_BUCKETCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
s3-policyJSON 文件来访问 S3 存储桶。运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令应用策略:
S3_POLICY=$(aws iam create-policy --policy-name $CLUSTER_NAME-acm-obs \ --policy-document file://$SCRATCH_DIR/s3-policy.json \ --query 'Policy.Arn' --output text) echo $S3_POLICY
S3_POLICY=$(aws iam create-policy --policy-name $CLUSTER_NAME-acm-obs \ --policy-document file://$SCRATCH_DIR/s3-policy.json \ --query 'Policy.Arn' --output text) echo $S3_POLICYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
TrustPolicyJSON 文件。运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,为 AWS Prometheus 和 CloudWatch 创建角色:
S3_ROLE=$(aws iam create-role \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --assume-role-policy-document file://$SCRATCH_DIR/TrustPolicy.json \ --query "Role.Arn" --output text) echo $S3_ROLE
S3_ROLE=$(aws iam create-role \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --assume-role-policy-document file://$SCRATCH_DIR/TrustPolicy.json \ --query "Role.Arn" --output text) echo $S3_ROLECopy to Clipboard Copied! Toggle word wrap Toggle overflow 将策略附加到角色。运行以下命令:
aws iam attach-role-policy \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --policy-arn $S3_POLICY
aws iam attach-role-policy \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --policy-arn $S3_POLICYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的 secret 可能类似以下文件:
config部分指定signature_version2: false,且不指定access_key和secret_key:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
指定
MultiClusterObservability自定义资源中的服务帐户注解,如 创建 MultiClusterObservability 自定义资源 部分所述。 使用以下命令,检索云供应商的 S3 access key 和 secret key。您必须在 secret 中对
base64字符串进行解码、编辑和编码:要为云供应商编辑和解码 S3 访问密钥,请运行以下命令:
YOUR_CLOUD_PROVIDER_ACCESS_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep access_key | awk '{print $2}')YOUR_CLOUD_PROVIDER_ACCESS_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep access_key | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看云供应商的访问密钥,请运行以下命令:
echo $YOUR_CLOUD_PROVIDER_ACCESS_KEY
echo $YOUR_CLOUD_PROVIDER_ACCESS_KEYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要为云供应商编辑和解码 secret 密钥,请运行以下命令:
YOUR_CLOUD_PROVIDER_SECRET_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep secret_key | awk '{print $2}')YOUR_CLOUD_PROVIDER_SECRET_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep secret_key | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 运行以下命令,以查看云供应商的 secret 密钥:
echo $YOUR_CLOUD_PROVIDER_SECRET_KEY
echo $YOUR_CLOUD_PROVIDER_SECRET_KEYCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查以下部署和有状态集的 pod 来验证是否启用了 Observability。您可能会收到以下信息:
observability-thanos-query (deployment) observability-thanos-compact (statefulset) observability-thanos-receive-default (statefulset) observability-thanos-rule (statefulset) observability-thanos-store-shard-x (statefulsets)
observability-thanos-query (deployment) observability-thanos-compact (statefulset) observability-thanos-receive-default (statefulset) observability-thanos-rule (statefulset) observability-thanos-store-shard-x (statefulsets)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2.3. 创建 MultiClusterObservability 自定义资源 复制链接链接已复制到粘贴板!
使用 MultiClusterObservability 自定义资源为各种组件指定持久性卷存储大小。您必须在初始创建 MultiClusterObservability 自定义资源时设置存储大小。当您部署后更新存储大小值时,只有在存储类支持动态卷扩展时,更改才会生效。如需更多信息,请参阅 Red Hat OpenShift Container Platform 文档中的扩展持久性卷。
完成以下步骤,在 hub 集群中创建 MultiClusterObservability 自定义资源:
创建名为
multiclusterobservability_cr.yaml的MultiClusterObservability自定义资源 YAML 文件。查看以下默认 YAML 文件以查看可观察性:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可能需要修改
advanced部分中的retentionConfig参数的值。如需更多信息,请参阅 Thanos Downsampling 分辨率和保留时间。根据受管集群的数量,您可能需要为有状态的集合更新存储量。如果您的 S3 存储桶被配置为使用 STS 令牌,请给服务帐户通过 S3 角色使用 STS。查看以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 Observability API。
要在基础架构机器集上部署,您必须通过更新
MultiClusterObservabilityYAML 中的nodeSelector来为设置设置一个标签。您的 YAML 可能类似以下内容:nodeSelector: node-role.kubernetes.io/infra: ""nodeSelector: node-role.kubernetes.io/infra: ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 创建基础架构机器集。
运行以下命令,将 Observability YAML 应用到集群:
oc apply -f multiclusterobservability_cr.yaml
oc apply -f multiclusterobservability_cr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 默认情况下,如果您没有在
MultiClusterObservability自定义资源中定义storageConfig.storageClass字段,平台默认StorageClass字段会在MultiClusterObservability资源的storageConfig部分填充。例如,AWS 默认storageClass设置为gp2。运行以下命令验证默认
storageClass:oc get storageClass
oc get storageClassCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 151m gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 151m
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 151m gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 151mCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 通过启动 Grafana 仪表板来验证 Observability 服务是否已启用,并且数据是否填充。
- 在控制台 Overview 页面或 Clusters 页面点击位于控制台标头旁的 Grafana 链接。
访问
multicluster-observability-operator部署,验证multicluster-observability-operatorpod 正在被multiclusterhub-operator部署进行部署。运行以下命令:oc get deploy multicluster-observability-operator -n open-cluster-management --show-labels
oc get deploy multicluster-observability-operator -n open-cluster-management --show-labelsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可能会收到以下结果:
NAME READY UP-TO-DATE AVAILABLE AGE LABELS multicluster-observability-operator 1/1 1 1 35m installer.name=multiclusterhub,installer.namespace=open-cluster-management
NAME READY UP-TO-DATE AVAILABLE AGE LABELS multicluster-observability-operator 1/1 1 1 35m installer.name=multiclusterhub,installer.namespace=open-cluster-managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看
multicluster-observability-operator部署的labels部分,以了解与资源关联的标签。labels部分可能包含以下详情:labels: installer.name: multiclusterhub installer.namespace: open-cluster-managementlabels: installer.name: multiclusterhub installer.namespace: open-cluster-managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选: 如果要排除特定的受管集群收集 Observability 数据,请在集群中添加以下集群标签:
observability: disabled。
Observability 服务被启用。启用 Observability 服务后,会启动以下功能:
- 所有来自受管集群的警报管理器都转发到 Red Hat Advanced Cluster Management hub 集群。
所有连接到 Red Hat Advanced Cluster Management hub 集群的受管集群都会被启用,以将警报发回到 Red Hat Advanced Cluster Management Observability 服务。您可以配置 Red Hat Advanced Cluster Management Alertmanager 来处理重复数据删除、分组和将警报路由到正确的接收器集成,如电子邮件、PagerDuty 或 OpsGenie。您还可以处理静默和禁止警报。
注: 只有受支持的 OpenShift Container Platform 版本上的受管集群支持将警报转发到 Red Hat Advanced Cluster Management hub 集群功能。安装启用了 Observability 的 Red Hat Advanced Cluster Management 后,警报会自动转发到 hub 集群。请参阅转发警报以了解更多信息。
1.3.3. 从 Red Hat OpenShift Container Platform 控制台启用可观察性 复制链接链接已复制到粘贴板!
另外,您还可以从 Red Hat OpenShift Container Platform 控制台启用 Observability,创建一个名为 open-cluster-management-observability 的项目。完成以下步骤:
-
在
open-cluster-management-observability项目中创建名为multiclusterhub-operator-pull-secret的镜像 pull-secret。 -
在
open-cluster-management-observability项目中创建名为thanos-object-storage的对象存储 secret, 。 - 输入对象存储 secret 详细信息,然后单击 Create。请参阅 Enabling Observability 部分的第 4 步来查看 secret 的示例。
-
创建
MultiClusterObservability自定义资源实例。当您收到以下信息时,Observability 服务会从 OpenShift Container Platform 中成功启用:Observability components are deployed and running。
1.3.3.1. 验证 Thanos 版本 复制链接链接已复制到粘贴板!
在集群中部署 Thanos 后,从命令行界面(CLI)验证 Thanos 版本。
登录到 hub 集群后,在 Observability pod 中运行以下命令以接收 Thanos 版本:
thanos --version
thanos --version
此时会显示 Thanos 版本。
1.3.4. 禁用 Observability 复制链接链接已复制到粘贴板!
您可以禁用 Observability,这会在 Red Hat Advanced Cluster Management hub 集群中停止数据收集。
1.3.4.1. 在所有集群中禁用 Observability 复制链接链接已复制到粘贴板!
通过删除所有受管集群中的 Observability 组件来禁用 Observability。
通过将 enableMetrics 设置为 false 来更新 multicluster-observability-operator 资源。更新的资源可能类似如下:
1.3.4.2. 在单个集群中禁用 Observability 复制链接链接已复制到粘贴板!
通过删除特定受管集群中的 Observability 组件来禁用 Observability。完成以下步骤:
-
将
observability: disabled标签添加到managedclusters.cluster.open-cluster-management.io自定义资源中。 在 Red Hat Advanced Cluster Management 控制台 Clusters 页面中,将
observability=disabled标签添加到指定的集群中。注: 当一个带有 Observability 组件的受管集群被分离时,metric
-collector部署会被删除。
1.3.5. 删除 Observability 复制链接链接已复制到粘贴板!
当删除 MultiClusterObservability 自定义资源时,您要禁用并卸载 Observability 服务。在 OpenShift Container Platform 控制台导航中,选择 Operators > Installed Operators > Advanced Cluster Manager for Kubernetes。删除 MultiClusterObservability 自定义资源。
1.3.6. 其他资源 复制链接链接已复制到粘贴板!
对象存储信息的云供应商文档链接:
- 请参阅使用 Observability。
- 要了解更多有关自定义 Observability 服务的信息,请参阅自定义 Observability。
- 如需更多相关主题,返回到 Observability 服务。