观察环境

Red Hat Advanced Cluster Management for Kubernetes 2.1

观察环境

摘要

观察 Red Hat Advanced Cluster Management for Kubernetes 中的环境

第 1 章 观察环境

您可以使用 Red Hat Advanced Cluster Management for Kubernetes 深入了解受管集群并进行优化。启用 observability 服务 operator(multicluster-observability-operator)以监控受管集群的健康状态。在以下部分了解多集群观察服务的架构。

Multi-cluster observability architecture

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 角色。

先决条件:

  • 您必须安装 Red Hat Advanced Cluster Management for Kubernetes。如需更多信息,请参阅在线安装
  • 您必须配置对象存储来创建存储解决方案。Red Hat Advanced Cluster Management 只支持带有稳定对象存储的云供应商,如 Amazon S3(或其他 S3 兼容对象存储,如 Ceph)、Google Cloud Storage 和 Azure 存储。

    重要:当您配置对象存储时,请确保在敏感数据持久化时满足加密要求。如需支持的对象存储的完整列表,请参阅 Thanos 文档

1.3.1. 启用可观察性

通过创建一个 MultiClusterObservability CustomResource(CR)实例来启用 observability 服务。完成以下步骤以启用可观察服务:

  1. 登录到您的 Red Hat Advanced Cluster Management hub 集群。
  2. 使用以下命令,为可观察服务创建一个命名空间:

    oc create namespace open-cluster-management-observability
  3. 生成 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
  4. 为对象存储创建 secret。您的 secret 必须包含存储解决方案的凭证。例如,运行以下命令:

    oc create -f thanos-object-storage.yaml -n open-cluster-management-observability
    1. 查看以下受支持对象存储的 secret 示例:

      1. 对于 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
      2. 对于 Google,您的 secret 可能类似以下文件:

        type: GCS
        config:
          bucket: YOUR_GCS_BUCKET
          service_account: YOUR_SERVICE_ACCOUNT
      3. 对于 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
  5. 通过完成以下步骤,为受管集群创建 MultiClusterObservability 自定义资源(mco CR):

    1. 创建名为 multiclusterobservability_cr.yamlMultiClusterObservability 自定义资源 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

    2. 要在基础架构机器集上部署,您必须通过更新 MultiClusterObservability YAML 中的 nodeSelector 来为设置设置一个标签。您的 YAML 可能类似以下内容:

      nodeSelector:
          node-role.kubernetes.io/infra:

      如需更多信息,请参阅创建基础架构机器集

    3. 运行以下命令,将可观察 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 服务。

  6. 要验证是否已启用了 observabilty 服务,启动 Grafana 仪表板,查看其中是否包括了相关的数据。完成以下步骤:

    1. 登录到 Red Hat Advanced Cluster Management 控制台。
    2. 在导航菜单中选择 Observe environments > Overview
    3. 点击位于控制台标头旁的 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 定义自定义规则来创建警报条件,并将通知发送到外部消息服务。完成以下步骤以创建自定义规则:

  1. 登录到您的 Red Hat Advanced Cluster Management hub 集群。
  2. 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

  3. 如果要验证警报规则是否正常工作,请完成以下步骤:

    1. 访问 Grafana 仪表板,然后选择 Explore 图标。
    2. 在 Metrics 探索栏中,输入 "ALERTS" 并运行查询。系统中所有处于 pending 或 firing 状态的 ALERTS 都会被显示。
    3. 如果没有显示警报,查看规则来检查表达式是否正确。

已创建一个自定义规则。

1.4.1.1. 为 AlertManager 配置规则

集成外部消息工具,如 email、Slack 和 PagerDuty 以接收来自 AlertManager 的通知。您必须覆盖 open-cluster-management-observability 命名空间中的 alertmanager-config secret 来添加集成,并为 AlertManager 配置路由。完成以下步骤以更新自定义接收器规则:

  1. alertmanager-config secret 中提取数据。运行以下命令:

    oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yaml
  2. 运行以下命令,编辑并保存 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 仪表板:

  1. 登录到您的 Red Hat Advanced Cluster Management hub 集群。
  2. 在导航菜单中选择 Observe environments > Overview > Grafana link

    您还可以从 Clusters 页面访问 Grafana 仪表板。在导航菜单中选择 Automate infrastructure > Clusters > Grafana

  3. 通过在 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 标签:

    1. 在 Red Hat Advanced Cluster Management 控制台中,选择 Automate infrastructure > Clusters
    2. 选择您要禁用发送到可观察性的数据收集的集群名称。
    3. 选择 Labels
    4. 通过添加以下标签来创建禁用可观察性集合的标签:

      observability=disable
    5. 选择 Add 添加该标签。
    6. 选择 Done 以关闭标签列表。

:当分离带有可观察组件的受管集群时,metric -collector 部署会被删除。

有关使用可观察性服务监控控制台数据的更多信息,请参阅观察环境