观察环境
观察环境
摘要
第 1 章 观察环境
您可以使用 Red Hat Advanced Cluster Management for Kubernetes 深入了解受管集群并进行优化。启用 observability 服务 operator(multicluster-observability-operator
)以监控受管集群的健康状态。在以下部分了解多集群观察服务的架构。
1.1. 观察(Observability)服务
默认情况下,产品安装中包含了可观察性(observability)功能,但不启用它。由于对持久性存储的要求,observability 服务默认不会启用。Red Hat Advanced Cluster Management 支持以下 stable 对象存储:
- Amazon S3(或其他 S3 兼容对象存储,如 Ceph)
- Google Cloud Storage
- Azure 存储
当该服务被启用时,observability-endpoint-controller
会自动部署到每个导入或创建的集群中。此控制器从 Red Hat OpenShift Container Platform Prometheus 收集数据,然后将其发送到 Red Hat Advanced Cluster Management hub 集群。
注:在 Red Hat Advanced Cluster Management 中,只有 Red Hat OpenShift Container Platform 4.x 集群支持 metrics-collector
。
observability 服务部署了一个 Prometheus AlertManager 实例,它允许通过第三方应用程序转发警报。它还包括一个 Grafana 实例,通过仪表板(静态)或数据探索启用数据视觉化。
有关启用可观察性的更多信息,请参阅启用可观察性服务。
1.2. Observability 控制台页面
您还可以在以下控制台页面中选择 Grafana 链接来查看受管集群中的指标数据:
- 概述 :跨供应商的操作详情
- 拓扑 :集群、应用程序和策略的可视化数据
1.2.1. Observe 环境概述页
您可以在 Overview 仪表板中查看有关集群的以下信息:
- 所有集群以及每个供应商的集群、节点和 pod 数
- 集群状态
- 集群合规性
- Pod 状态
仪表板上有多个元素,可以点它们打开对相关资源的搜索。点击供应商卡查看来自一个供应商的集群信息。您可以通过移动拖放不同的项目来重新组织卡来定制 Overview 仪表板的显示。
1.2.2. 拓扑页
Topology 页面显示集群中的相关 Kubernetes 资源。在配置受管集群时,可以在 Topology 视图中看到更多集群。
要减少页面中的图,您可以根据集群、命名空间和标签过滤视图。您还可以选择代表 Kubernetes 资源的图标来过滤设计。
在 Topology 页面中了解更多有关可用标签的信息:
- Clusters:您可以使用图形格式监控集群网络、对象网络和安全策略。查看您的 hub 集群、所有受管集群并监控安全违反情况。
- policies:查看正在验证的策略、策略放置和集群。检查所选策略的违反情况。
1.3. 启用 observability 服务
监控使用 observability 服务(multicluster-observability-operator
)的受管集群的监控状态。
需要的访问权限:集群管理员或 open-cluster-management:cluster-manager-admin
角色。
先决条件:
1.3.1. 启用可观察性
通过创建一个 MultiClusterObservability CustomResource(CR)实例来启用 observability 服务。完成以下步骤以启用可观察服务:
- 登录到您的 Red Hat Advanced Cluster Management hub 集群。
使用以下命令,为可观察服务创建一个命名空间:
oc create namespace open-cluster-management-observability
生成 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=-` oc create secret generic multiclusterhub-operator-pull-secret \ -n open-cluster-management-observability \ --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \ --type=kubernetes.io/dockerconfigjson
如果命名空间中没有定义
multiclusterhub-operator-pull-secret
,将openshift-config
命名空间中的pull-secret
复制到open-cluster-management-observability
命名空间中。运行以下命令:DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-` oc create secret generic multiclusterhub-operator-pull-secret \ -n open-cluster-management-observability \ --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \ --type=kubernetes.io/dockerconfigjson
为对象存储创建 secret。您的 secret 必须包含存储解决方案的凭证。例如,运行以下命令:
oc create -f thanos-object-storage.yaml -n open-cluster-management-observability
查看以下受支持对象存储的 secret 示例:
对于 Amazon S3 或 S3 兼容,您的 secret 可能类似以下文件:
apiVersion: v1 kind: Secret metadata: name: thanos-object-storage type: Opaque stringData: thanos.yaml: | type: s3 config: bucket: YOUR_S3_BUCKET endpoint: YOUR_S3_ENDPOINT insecure: false access_key: YOUR_ACCESS_KEY secret_key: YOUR_SECRET_KEY
对于 Google,您的 secret 可能类似以下文件:
type: GCS config: bucket: YOUR_GCS_BUCKET service_account: YOUR_SERVICE_ACCOUNT
对于 Azure,您的 secret 可能类似以下文件:
type: AZURE config: storage_account: YOUR_STORAGE_ACCT storage_account_key: YOUR_STORAGE_KEY container: YOUR_CONTAINER endpoint: YOUR_ENDPOINT max_retries: 0
通过完成以下步骤,为受管集群创建
MultiClusterObservability
自定义资源(mco CR):创建名为
multiclusterobservability_cr.yaml
的MultiClusterObservability
自定义资源 YAML 文件。查看以下默认 YAML 文件以查看可观察性:
apiVersion: observability.open-cluster-management.io/v1beta1 kind: MultiClusterObservability metadata: name: observability #Your customized name of MulticlusterObservability CR spec: availabilityConfig: High # Available values are High or Basic imagePullPolicy: Always imagePullSecret: multiclusterhub-operator-pull-secret observabilityAddonSpec: # The ObservabilityAddonSpec defines the global settings for all managed clusters which have observability add-on enabled enableMetrics: true # EnableMetrics indicates the observability addon push metrics to hub server interval: 60 # Interval for the observability addon push metrics to hub server retentionResolution1h: 30d # How long to retain samples of 1 hour in bucket retentionResolution5m: 14d retentionResolutionRaw: 5d storageConfigObject: # Specifies the storage to be used by Observability metricObjectStorage: name: thanos-object-storage key: thanos.yaml statefulSetSize: 10Gi # The amount of storage applied to the Observability StatefulSets, i.e. Amazon S3 store, Rule, compact and receiver. statefulSetStorageClass: gp2
您可能想要修改
retentionResolution
参数的值。如需更多信息,请参阅 Thanos Downsampling 分辨率和保留时间。取决于受管集群的数量,您可能需要更新statefulSetSize
。如需更多信息,请参阅 Observability API。要在基础架构机器集上部署,您必须通过更新 MultiClusterObservability YAML 中的
nodeSelector
来为设置设置一个标签。您的 YAML 可能类似以下内容:nodeSelector: node-role.kubernetes.io/infra:
如需更多信息,请参阅创建基础架构机器集。
运行以下命令,将可观察 YAML 应用到集群:
oc apply -f multiclusterobservability_cr.yaml
用于 Thanos、Grafana 和 AlertManager 的所有 pod 在
open-cluster-management-observability
命名空间中创建。所有连接到 Red Hat Advanced Cluster Management hub 集群的受管集群都会被启用,以将指标数据发送回 Red Hat Advanced Cluster Management Observability 服务。
要验证是否已启用了 observabilty 服务,启动 Grafana 仪表板,查看其中是否包括了相关的数据。完成以下步骤:
- 登录到 Red Hat Advanced Cluster Management 控制台。
- 在导航菜单中选择 Observe environments > Overview。
点击位于控制台标头旁的 Grafana 链接,从您的受管集群中查看指标。
注:如果要排除特定的受管集群收集可观察性数据,请将以下集群标签添加到集群中:
vendor:OpenShift
.
1.3.2. 禁用可观察性
要禁用可观察性服务,请卸载 observability
资源。请参阅使用命令删除 MultiClusterHub 实例的第 1 步。
要了解更多有关如何定制可观察性的信息,请参阅定制可观察性。
1.4. 定制可观察性
以下部分介绍了对可观察性服务所收集的数据进行自定义、管理和查看的信息。
使用 must-gather
命令收集有关为可观察性资源创建的新信息的日志。如需更多信息,请参阅故障排除文档中的 Must-gather 部分。
1.4.1. 创建自定义规则
您可以通过在可观察性资源中添加 Prometheus 记录规则和 警报规则,为可观察性安装创建自定义规则。如需更多信息,请参阅 Prometheus 配置。
注:您只能针对从所有受管集群收集的指标创建自定义规则。查看通过运行以下命令收集的指标数据列表:kubectl describe cm observability-metrics-whitelist
。
使用 Prometheus 定义自定义规则来创建警报条件,并将通知发送到外部消息服务。完成以下步骤以创建自定义规则:
- 登录到您的 Red Hat Advanced Cluster Management hub 集群。
在
open-cluster-management-observability
命名空间中创建一个名为thanos-rule-custom-rules
的 ConfigMap。键必须被命名为thanos-ruler-custom-rules.yaml
,如下例所示。您可以在配置中创建多个规则:默认情况下,开箱即用的警报规则是在
open-cluster-management-observability
命名空间中的 ConfigMap 中定义的。例如,您可以创建一个自定义警报规则,在 CPU 使用量超过了您定义的值时通知您:
data: custom_rules.yaml: | groups: - name: cluster-health rules: - alert: ClusterCPUHealth-jb annotations: summary: Notify when CPU utilization on a cluster is greater than the defined utilization limit description: "The cluster has a high CPU usage: {{ $value }} core for {{ $labels.cluster }} {{ $labels.clusterID }}." expr: | max(cluster:cpu_usage_cores:sum) by (clusterID, cluster, prometheus) > 0 for: 5s labels: cluster: "{{ $labels.cluster }}" prometheus: "{{ $labels.prometheus }}" severity: critical
注:如果这是第一个新的自定义规则,它会立即创建。对于 ConfigMap 的更改,您必须使用以下命令重启 observability pod:
kubectl rollout restart statefulset observability-observatorium-thanos-rule -n open-cluster-management-observability
。如果要验证警报规则是否正常工作,请完成以下步骤:
- 访问 Grafana 仪表板,然后选择 Explore 图标。
- 在 Metrics 探索栏中,输入 "ALERTS" 并运行查询。系统中所有处于 pending 或 firing 状态的 ALERTS 都会被显示。
- 如果没有显示警报,查看规则来检查表达式是否正确。
已创建一个自定义规则。
1.4.1.1. 为 AlertManager 配置规则
集成外部消息工具,如 email、Slack 和 PagerDuty 以接收来自 AlertManager 的通知。您必须覆盖 open-cluster-management-observability
命名空间中的 alertmanager-config
secret 来添加集成,并为 AlertManager 配置路由。完成以下步骤以更新自定义接收器规则:
从
alertmanager-config
secret 中提取数据。运行以下命令:oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yaml
运行以下命令,编辑并保存
alertmanager.yaml
文件配置:oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml | oc -n open-cluster-management-observability replace secret --filename=-
更新的 secret 可能与以下类似:
global smtp_smarthost: 'localhost:25' smtp_from: 'alertmanager@example.org' smtp_auth_username: 'alertmanager' smtp_auth_password: 'password' templates: - '/etc/alertmanager/template/*.tmpl' route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 3h receiver: team-X-mails routes: - match_re: service: ^(foo1|foo2|baz)$ receiver: team-X-mails
您的更改会在修改后立即生效。如需 AlertManager 的示例,请参阅 prometheus/alertmanager。
1.4.2. 查看和查找数据
通过访问 Grafana 来查看来自受管集群的数据。完成以下步骤,从控制台查看 Grafana 仪表板:
- 登录到您的 Red Hat Advanced Cluster Management hub 集群。
在导航菜单中选择 Observe environments > Overview > Grafana link。
您还可以从 Clusters 页面访问 Grafana 仪表板。在导航菜单中选择 Automate infrastructure > Clusters > Grafana。
- 通过在 Grafana 导航菜单中选择 Explore 图标来访问 Prometheus 指标浏览器。
1.4.3. 禁用 metrics-collector
您可以禁用 metrics-collector
,收集数据并将收集到的数据发送到可观察性服务的操作会被停止。
1.4.3.1. 在所有集群中禁用 metrics-collector
禁用 metrics-collector
Pod,停止数据收集并将其发送到 Red Hat Advanced Cluster Management hub 集群中的 observability 服务。
当您禁用 metrics-collector
时部署会缩减为零,并且所有带有 vendor:OpenShift
标签的受管集群都被禁用。查看以下选项以禁用 metrics-collector
:
通过将 enableMetrics
设置为 false
来更新 multicluster-observability-operator
资源。更新的资源可能类似如下:
spec: availabilityConfig: High # Available values are High or Basic imagePullPolicy: Always imagePullSecret: multiclusterhub-operator-pull-secret observabilityAddonSpec: # The ObservabilityAddonSpec defines the global settings for all managed clusters which have observability add-on enabled enableMetrics: false #indicates the observability addon push metrics to hub server
1.4.3.2. 在单个集群中禁用 metrics-collector
您可以通过完成以下步骤之一,禁用特定受管集群上的 metrics-collector
:
-
在自定义资源
managedclusters.cluster.open-cluster-management.io
中添加observability: disabled
标签。 在 Red Hat Advanced Cluster Management 控制台的 Clusters 页面中,完成以下步骤来添加
observability: disabled
标签:- 在 Red Hat Advanced Cluster Management 控制台中,选择 Automate infrastructure > Clusters。
- 选择您要禁用发送到可观察性的数据收集的集群名称。
- 选择 Labels。
通过添加以下标签来创建禁用可观察性集合的标签:
observability=disable
- 选择 Add 添加该标签。
- 选择 Done 以关闭标签列表。
注:当分离带有可观察组件的受管集群时,metric -collector
部署会被删除。
有关使用可观察性服务监控控制台数据的更多信息,请参阅观察环境。