1.4. 定制可观察性配置
启用可观察性后,根据环境的具体需求自定义可观察性配置。管理并查看可观察性服务收集的集群团队数据。
需要的访问权限:集群管理员
1.4.1. 创建自定义规则 复制链接链接已复制到粘贴板!
通过在可观察性资源中添加 Prometheus 记录规则和 警报规则,为可观察性安装创建自定义规则。
要预先计算昂贵的表达式,请使用带有 Prometheus 的记录规则功能来创建警报条件,并根据您要将警报发送到外部服务来发送通知。结果保存为一组新的时间序列。查看以下示例,以在 thanos-ruler-custom-rules 配置映射中创建自定义警报规则:
要获得当 CPU 用量通过您定义的值的通知,请创建以下自定义警报规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备注:
-
当您更新自定义规则时,
observability-thanos-rulepod 会自动重启。 - 您可以在配置中创建多个规则。
-
默认警报规则位于
open-cluster-management-observability命名空间的observability-thanos-rule-default-rules配置映射中。
-
当您更新自定义规则时,
要创建自定义记录规则以获取 pod 的容器内存缓存总和,请创建以下自定义规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 在修改了配置映射后,配置会自动重新加载。由于
observability-thanos-rulesidecar 中的config-reload,所以配置会重新加载。
要验证警报规则是否正常工作,请进入 Grafana 仪表板,选择 Explore 页面并查询 ALERTS。只有在创建了警报时,Grafana 中才有警报。
1.4.2. 添加自定义指标 复制链接链接已复制到粘贴板!
要使用 Red Hat Advanced Cluster Management for Kubernetes 监控远程集群的指标,请检查指标是否导出为平台或用户工作负载指标。使用以下三种方法之一查找指标类型:
- 在您要监控的解决方案文档中找到指标类型。
- 通过联系您的产品支持来查找指标类型。
通过检查所观察资源使用的
ServiceMonitor的注解来查找指标类型。-
平台指标使用
operator.prometheus.io/controller-id: openshift-platform-monitoring/prometheus-operator。 -
用户工作负载指标使用
operator.prometheus.io/controller-id: openshift-user-workload-monitoring/prometheus-operator。
-
平台指标使用
您还可以通过进入 Observe > Targets 并从右上角的 Source 过滤器选择 Platform 或 User 来在控制台中找到 ServiceMonitor。
注: Source 过滤器提供服务监控器或目标信息,而不是指标列表。
如果指标是平台,请继续 添加平台指标。如果指标是用户工作负载,请继续 添加用户工作负载指标。
1.4.2.1. 添加平台指标 复制链接链接已复制到粘贴板!
您可以通过在 open-cluster-management-observability 命名空间中的 hub 集群上创建一个 ConfigMap 来监控 Platform 指标。使用 observability-metrics-custom-allowlist 作为名称。请参阅以下 ConfigMap 示例,用于监控 Platform 指标:
您收集的指标的名称与您在受管集群 记录 参数中定义的名称相同。运行查询表达式后,您将获得指标值结果。您可以使用一个部分或两个部分,它们适用于启用了监控的每个集群。
如果您只想从单个受管集群收集自定义指标,请使用以下示例,并在 open-cluster-management-addon-observability 命名空间中在受管集群中应用配置映射:
您收集的指标的名称与您在受管集群 记录 参数中定义的名称相同。运行查询表达式后,您将获得指标值结果。您可以使用一个部分或这两个部分。
1.4.2.2. 添加用户工作负载指标 复制链接链接已复制到粘贴板!
您可以通过在要捕获指标的命名空间中设置受管集群上的配置来监控用户工作负载指标。名称必须是 observability-metrics-custom-allowlist,格式必须与以下示例相同:
前面的示例从命名空间 monitored_namespace 监控用户工作负载指标 sample_metrics。如果您在 open-cluster-management-addon-observability 命名空间中创建配置,则会从受管集群的所有命名空间收集指标。
1.4.2.3. 删除默认指标 复制链接链接已复制到粘贴板!
如果您不想从受管集群收集特定指标的数据,请从 observability-metrics-custom-allowlist.yaml 文件中删除指标。当您删除指标时,不会从受管集群收集指标数据。完成以下步骤以删除默认指标:
使用以下命令验证
mco observability是否已启用:oc get mco observability -o yaml
oc get mco observability -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在 metrics 名称的开头使用连字符
-将默认指标名称添加到metrics_list.yaml参数中。查看以下指标示例:-cluster_infrastructure_provider
-cluster_infrastructure_providerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令在
open-cluster-management-observability命名空间中创建observability-metrics-custom-allowlist配置映射:oc apply -n open-cluster-management-observability -f observability-metrics-custom-allowlist.yaml
oc apply -n open-cluster-management-observability -f observability-metrics-custom-allowlist.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证 observability 服务是否没有从受管集群收集特定指标。当您从 Grafana 仪表板查询指标时,指标不会显示。
1.4.3. 为保留添加高级配置 复制链接链接已复制到粘贴板!
要根据您的需要更新每个可观察性组件的保留,请添加 advanced configuration 部分。完成以下步骤:
使用以下命令编辑
MultiClusterObservability自定义资源:oc edit mco observability -o yaml
oc edit mco observability -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
advanced部分添加到 文件。您的 YAML 文件可能类似以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备注:
-
有关可添加到
高级配置中的所有参数的描述,请参阅 Observability API 文档。 -
保留所有分辨率级别的默认保留(如
retentionResolutionRaw、retentionResolution5m或retentionResolution1h)是 365 天(365d)。您必须在MultiClusterObservabilityspec.advanced.retentionConfig参数中为解析保留设置一个显式值。
-
有关可添加到
如果您从早期版本升级并希望保留该版本保留配置,请添加前面提到的配置。完成以下步骤:
运行以下命令来进入
MultiClusterObservability资源:oc edit mco observability
oc edit mco observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
spec.advanced.retentionConfig参数中,应用以下配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4. 单节点 OpenShift 集群的动态指标 复制链接链接已复制到粘贴板!
动态指标收集根据特定条件支持自动指标收集。默认情况下,单节点 OpenShift 集群不会收集 pod 和容器资源指标。当单节点 OpenShift 集群达到特定级别的资源消耗后,会动态收集定义的粒度指标。当集群资源消耗在一段时间内持续低于阈值时,细致的指标集合会停止。
这些指标会根据由集合规则指定的受管集群上的条件动态收集。由于这些指标是动态收集的,所以以下 Red Hat Advanced Cluster Management Grafana 仪表板不会显示任何数据。激活集合规则并收集相应指标时,以下面板会在启动集合规则的时间里显示数据:
- Kubernetes/Compute Resources/Namespace (Pods)
- Kubernetes/Compute Resources/Namespace (Workloads)
- Kubernetes/Compute Resources/Nodes (Pods)
- Kubernetes/Compute Resources/Pod
- Kubernetes/Compute Resources/Workload A collection 规则包括以下条件:
- 动态收集的一组指标。
- 使用 PromQL 表达式定义的条件。
-
集合的间隔,该集合必须设为
true。 - 一个匹配表达式,用于选择需要评估收集规则的集群。
默认情况下,集合规则每 30 秒或以特定时间间隔在受管集群上持续评估。集合间隔和时间间隔中的最低值具有高优先权。当收集规则条件在 for 属性指定的持续时间内保留后,收集规则将启动,由规则指定的指标会在受管集群上自动收集。指标集合会在受管集群上不再存在集合规则条件后自动停止,至少有 15 分钟。
集合规则分组为名为 gather_rules 的参数部分,该部分可启用或禁用作为组。Red Hat Advanced Cluster Management 安装包含集合规则组 SNOResourceUsage,它有两个默认集合规则: HighCPUUsage 和 HighMemoryUsage。HighCPUUsage 集合规则从节点 CPU 使用率超过 70% 时开始。如果单节点 OpenShift 集群的总内存使用率超过可用节点内存的 70%,则 HighMemoryUsage 集合规则开始。目前,前面提到的阈值是固定的,且无法更改。当集合规则开始超过 for 属性指定的间隔时,系统会自动开始收集 dynamic_metrics 中指定的指标。
在以下 YAML 文件中查看 collect_rules 部分的动态指标列表:
可以在 custom-allowlist 中禁用 collect_rules.group,如下例所示。当 collect_rules.group 禁用时,指标集合会恢复到之前的行为。这些指标定期收集,指定间隔:
collect_rules: - group: -SNOResourceUsage
collect_rules:
- group: -SNOResourceUsage
只有在启动规则时,数据才会在 Grafana 中显示。
1.4.5. 从控制台更新 MultiClusterObservability 自定义资源副本 复制链接链接已复制到粘贴板!
如果工作负载增加,增加可观察 pod 的副本数。从您的 hub 集群中进入到 Red Hat OpenShift Container Platform 控制台。找到 MultiClusterObservability 自定义资源,并更新您要更改副本的组件的 replicas 参数值。更新的 YAML 可能类似以下内容:
spec:
advanced:
receive:
replicas: 6
spec:
advanced:
receive:
replicas: 6
有关 mco observability 自定义资源中的参数的更多信息,请参阅 Observability API 文档。
1.4.6. 增加并减少持久性卷和持久性卷声明 复制链接链接已复制到粘贴板!
增加并减少持久性卷和持久性卷声明,以更改存储类中的存储量。完成以下步骤:
-
要增大持久性卷的大小,如果存储类支持扩展卷,请更新
MultiClusterObservability自定义资源。 要缩小持久性卷的大小,请使用持久性卷移除 pod,请删除持久性卷并重新创建它们。您可能会遇到持久性卷中的数据丢失。完成以下步骤:
-
通过在
MultiClusterObservability自定义资源中添加注解mco-pause: "true"来暂停MultiClusterObservabilityoperator。 查找所需组件的有状态集或部署。将其副本数更改为
0。这会启动关闭,它会在适用于避免数据丢失时上传本地数据。例如,ThanosReceivestateful 集名为observability-thanos-receive-default,默认有三个副本。因此,您要查找以下持久性卷声明:-
data-observability-thanos-receive-default-0 -
data-observability-thanos-receive-default-1 -
data-observability-thanos-receive-default-2
-
- 删除所需组件所使用的持久性卷和持久性卷声明。
-
在
MultiClusterObservability自定义资源中,将组件的存储大小编辑为 storage size 字段中所需的数量。带有组件名称的前缀。 -
通过删除之前添加的注解来取消暂停
MultiClusterObservabilityOperator。 -
要在 Operator 暂停后启动协调,请删除
multicluster-observability-operator和observatorium-operatorpod。pod 会被立即重新创建并协调。
-
通过在
-
通过检查
MultiClusterObservability自定义资源来验证持久性卷和卷声明是否已更新。
1.4.7. 自定义路由证书 复制链接链接已复制到粘贴板!
如果要自定义 OpenShift Container Platform 路由认证,则必须在 alt_names 部分添加路由。要确保 OpenShift Container Platform 路由可以访问,请添加以下信息:alertmanager.apps.<domainname>, observatorium-api.apps.<domainname>, rbac-query-proxy.apps.<domainname>。
如需了解更多详细信息,请参阅监管文档中的 alertmanager 路由证书。
注意 :用户负责证书轮转和更新。
1.4.8. 自定义用于访问对象存储的证书 复制链接链接已复制到粘贴板!
您可以通过创建一个包含证书颁发机构并配置 MultiClusterObservability 自定义资源的 Secret 资源来配置与 observability 对象存储的安全连接。完成以下步骤:
要验证对象存储连接,请使用以下命令在包含证书颁发机构的文件中创建
Secret对象:oc create secret generic <tls_secret_name> --from-file=ca.crt=<path_to_file> -n open-cluster-management-observability
oc create secret generic <tls_secret_name> --from-file=ca.crt=<path_to_file> -n open-cluster-management-observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 另外,您可以应用以下 YAML 来创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 如果要启用 mutual TLS,则需要在上一个 secret 中添加
public.crt和private.key密钥。使用以下命令在
metricObjectStorage部分添加 TLS secret 详情:oc edit mco observability -o yaml
oc edit mco observability -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的文件可能类似以下 YAML:
metricObjectStorage: key: thanos.yaml name: thanos-object-storage tlsSecretName: tls-certs-secret tlsSecretMountPath: /etc/<s3-directory>/certs
metricObjectStorage: key: thanos.yaml name: thanos-object-storage tlsSecretName: tls-certs-secret1 tlsSecretMountPath: /etc/<s3-directory>/certs2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用证书详情添加
http_config.tls_config部分,更新thanos-object-storagesecret 中的thanos.yaml定义。查看以下示例。根据需要替换值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 如果要启用 mutual TLS,您需要将
cert_file和key_file密钥添加到tls_config部分。请参见以下示例。根据需要替换值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ca_file、cert_file和key_file的路径必须与MultiClusterObservability自定义资源的tlsSecretMountPath匹配。ca.crt、public.crt和private.crt必须与tls_secret_name>Secret资源中的对应密钥匹配。
要验证您可以访问对象存储,请检查是否部署了 pod。运行以下命令:
oc -n open-cluster-management-observability get pods -l app.kubernetes.io/name=thanos-store
oc -n open-cluster-management-observability get pods -l app.kubernetes.io/name=thanos-storeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.9. 为可观察性附加组件配置代理设置 复制链接链接已复制到粘贴板!
配置代理设置,以允许受管集群的通信通过 HTTP 和 HTTPS 代理服务器访问 hub 集群。通常,附加组件不需要任何特殊配置来支持 hub 集群和受管集群之间的 HTTP 和 HTTPS 代理服务器。但是,如果启用了 observability 附加组件,则必须完成代理配置。
1.4.10. 先决条件 复制链接链接已复制到粘贴板!
- 您有一个 hub 集群。
- 您已启用了 hub 集群和受管集群之间的代理设置。
完成以下步骤,为可观察性附加组件配置代理设置:
- 进入 hub 集群上的集群命名空间。
通过添加
spec.proxyConfig参数,使用代理设置创建AddOnDeploymentConfig资源。查看以下 YAML 示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取 IP 地址,请在受管集群中运行以下命令:
oc -n default describe svc kubernetes | grep IP:
oc -n default describe svc kubernetes | grep IP:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
ManagedClusterAddOn资源,并通过引用您所做的AddOnDeploymentConfig资源来更新它。查看以下 YAML 示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证代理设置。如果您成功配置了代理设置,则由受管集群中的可观察性附加组件代理部署的指标收集器将数据发送到 hub 集群。完成以下步骤:
- 进入 hub 集群,然后在 Grafana 仪表板上显示受管集群。
- 查看代理设置的指标。
1.4.11. 禁用可观察性附加组件的代理设置 复制链接链接已复制到粘贴板!
如果您的开发需要更改,您可能需要为 hub 集群和受管集群禁用您配置的可观察附加组件的代理设置。您可以随时禁用 observability 附加组件的代理设置。完成以下步骤:
-
进入
ManagedClusterAddOn资源。 -
删除引用的
AddOnDeploymentConfig资源。
在使用负载均衡器或保留代理时,您可以自定义受管集群用来与 hub 集群通信的 Observatorium API 和 Alertmanager URL,以维护所有 Red Hat Advanced Cluster Management 功能。要自定义 URL,请完成以下步骤:
-
将您的 URL 添加到
MultiClusterObservabilityspec的advanced部分。请参见以下示例:
spec:
advanced:
customObservabilityHubURL: <yourURL>
customAlertmanagerHubURL: <yourURL>
spec:
advanced:
customObservabilityHubURL: <yourURL>
customAlertmanagerHubURL: <yourURL>
备注:
-
仅支持 HTTPS URL。如果您没有在 URL 中添加
https://,则方案会自动添加。 -
您可以在
customObservabilityHubURLspec中包含 Remote Write API 的标准路径/api/metrics/v1/default/api/v1/receive。如果没有包括该路径,Observability 服务会在运行时自动添加路径。 任何用于自定义 Observability hub 集群 URL 的中间组件都无法使用 TLS 终止,因为组件依赖于 MTLS 身份验证。自定义 Alertmanager hub 集群 URL 支持使用您自己的现有证书指令的中间组件 TLS 终止。
-
如果您使用自定义ObservabilityHubURL,请使用以下模板创建一个路由对象。将<intermediate_component_url> 替换为中间组件 URL:
-
-
如果您使用
customAlertmanagerHubURL,请使用以下模板创建路由对象。将<intermediate_component_url> 替换为中间组件 URL:
1.4.13. 配置细粒度 RBAC (技术预览) 复制链接链接已复制到粘贴板!
要限制对集群中特定命名空间的指标访问,请使用精细的访问控制(RBAC)。使用精细 RBAC,您可以允许应用程序团队只查看授予它们访问权限的命名空间的指标。
您必须为该 hub 集群的用户在 hub 集群上配置指标访问控制。在这个 hub 集群中,ManagedCluster 自定义资源代表每个受管集群。要配置 RBAC 并选择允许的命名空间,请使用 ManagedCluster 自定义资源中指定的规则和操作操作动词。
例如,有一个名为 my-awesome-app 的应用程序,此应用程序位于两个不同的受管集群 devcluster1 和 devcluster2 中。两个集群都位于 AwesomeAppNS 命名空间中。您有一个名为 my-awesome-app-admins 的 admin 用户组,您希望将此用户组只能从 hub 集群上的这两个命名空间中访问指标。
在本例中,要使用精细的 RBAC 来限制用户组访问,请完成以下步骤:
定义具有访问指标的权限的
ClusterRole资源。您的资源可能类似以下 YAML:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义
ClusterRoleBinding资源,它将组my-awesome-app-admins绑定到awesome-app-metrics-role的ClusterRole资源。您的资源可能类似以下 YAML:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
完成这些步骤后,当 my-awesome-app-admins 中的用户登录到 Grafana 控制台时,它们有以下限制:
- 用户不会看到用于汇总机级数据的仪表板的数据。
-
用户只能选择
ClusterRole资源中指定的受管集群和命名空间。
要设置不同类型的用户访问,请定义单独的 ClusterRole 和 ClusterRoleBindings 资源来代表命名空间中的不同受管集群。
1.4.14. 其他资源 复制链接链接已复制到粘贴板!
- 如需更多信息,请参阅 Prometheus 配置。有关记录规则和警报规则的更多信息,请参阅 Prometheus 文档中的 记录规则和警报规则。
- 有关查看仪表板的更多信息,请参阅使用 Grafana 仪表板。
- 请参阅 将指标导出到外部端点。
- 请参阅 为用户定义的项目启用监控。
- 请参阅 Observability API。
- 有关为 alertmanager 路由更新证书的详情,请参考 替换 alertmanager 的证书。
- 有关可观察警报的详情,请参阅 Observability 警报
- 如需了解更多有关警报转发的信息,请参阅 Prometheus Alertmanager 文档。
- 如需更多信息,请参阅 Observability 警报。
- 有关可观察性服务的更多主题,请参阅 Observability 服务。
- 如需更多信息,请参阅管理工作负载分区。