1.5. 使用 Observability


使用 Observability 服务查看跨团队的集群利用率。

需要的访问权限:集群管理员

1.5.1. 使用 Observability API 查询指标

要使用 mutual TLS 访问您的端点,它会验证网络连接中的双方身份,使用 Observability 外部 API 通过 Red Hat OpenShift Container Platform rbac-query-proxy 路由查询指标。完成以下步骤以获取对 rbac-query-proxy 路由的查询:

  1. 使用以下命令获取路由的详情:

    oc get route rbac-query-proxy -n open-cluster-management-observability
  2. 要使用 OpenShift Container Platform OAuth 访问令牌访问 rbac-query-proxy 路由,请运行以下命令来获取令牌。令牌必须与用户或服务帐户关联,该帐户有权获取命名空间:

    MY_TOKEN=$(oc whoami --show-token)
  3. 要访问 openshift-ingress 路由,请获取默认 CA 证书并将 tls.crt 密钥的内容存储在本地文件中。运行以下命令:

    oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt
  4. 要通过 mutual TLS 从 hub 集群访问默认 CA 证书的端点,该 TLS 验证网络连接中的双方的身份,请使用以下命令创建 proxy-byo-ca TLS secret:

    oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
  5. 要从 API 查询指标,请运行以下命令:

    curl --cacert ./ca.crt -H "Authorization: Bearer {TOKEN}" https://{PROXY_ROUTE_URL}/api/v1/query?query={QUERY_EXPRESSION}

    注:QUERY_EXPRESSION 是标准的 Prometheus 查询表达式。例如,通过用以下 URL 替换上一命令中的 URL 来查询指标 cluster_infrastructure_providerhttps://{PROXY_ROUTE_URL}/api/v1/query?query=cluster_infrastructure_provider。如需了解更多详细信息,请参阅查询 Prometheus

1.5.1.1. 将指标导出到外部端点

要实时支持 Prometheus Remote-Write 规格,请将指标导出到外部端点。完成以下步骤,将指标导出到外部端点:

  1. 使用 open-cluster-management-observability 命名空间中外部端点的访问信息,为外部端点创建 Kubernetes secret。查看以下示例 secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: victoriametrics
      namespace: open-cluster-management-observability
    type: Opaque
    stringData:
      ep.yaml: | 1
        url: http://victoriametrics:8428/api/v1/write 2
        http_client_config: 3
          basic_auth: 4
            username: test 5
            password: test 6
          tls_config: 7
            secret_name: 8
            ca_file_key: 9
            cert_file_key: 10
            key_file_key: 11
            insecure_skip_verify: 12
    1
    ep.yaml 参数是内容的关键,在下一步中在 MultiClusterObservability 自定义资源中使用。目前,Observability 支持在不需要安全检查的情况下将指标导出到端点,并使用基本身份验证或 tls 启用。查看下表以了解支持的参数的完整列表:
    2
    url 参数是必需的,以及外部端点的 URL。以字符串形式输入值。
    3
    http_client_config 参数是可选的,是 HTTP 客户端的高级配置。
    4
    basic_auth 参数是可选的,是用于基本身份验证的 HTTP 客户端配置。
    5
    username 参数是可选的,它是基本授权的用户名。以字符串形式输入值。
    6
    密码 是可选的,是基本授权的密码。以字符串形式输入值。
    7
    tls_config 参数是可选的,它是 TLS 的 HTTP 客户端配置。
    8
    secret_name 参数是必需的,它是包含证书的 secret 的名称。以字符串形式输入值。
    9
    ca_file_key 参数是必需的,secret 中 CA 证书的密钥。只有 insecure_skip_verify 参数设置为 true 时,这个参数才是可选的。以字符串形式输入值。
    10
    cert_file_key 参数是必需的,它是 secret 中的客户端证书的密钥。以字符串形式输入值。
    11
    key_file_key 参数是必需的,是 secret 中客户端密钥的密钥。以字符串形式输入值。
    12
    insecure_skip_verify 参数是可选的,用于跳过目标证书的验证。将值输入为布尔值。
  2. 要添加您要导出的外部端点列表,请将 writeStorage 参数添加到 MultiClusterObservability 自定义资源中。查看以下示例:

    spec:
      storageConfig:
        writeStorage: 1
        - key: ep.yaml
          name: victoriametrics
    1
    每个项目包含两个属性:namekeyname 是包含端点访问信息的 Kubernetes secret 的名称,key 是 secret 中内容的密钥。如果您在列表中添加多个项,则指标将导出到多个外部端点。
  3. 通过检查 acm_remote_write_requests_total 指标,在指标导出被启用后查看指标导出的状态。

    1. 在 hub 集群的 OpenShift Container Platform 控制台中点 Observe 部分中的 Metrics 进入 Metrics 页面。
    2. 然后查询 acm_remote_write_requests_total 指标。该指标的值是在一个 observatorium API 实例上具有特定响应的请求总数。name 标签是外部端点的名称。code 标签是指标导出的 HTTP 请求的返回代码。

1.5.2. 使用仪表板查看和查找数据

通过从 hub 集群访问 Grafana 来查看来自受管集群的数据。您可以查询特定的警报并为查询添加过滤器。

例如,若要从单节点 OpenShift 集群探索 cluster_infrastructure_provider 警报,请使用以下查询表达式: cluster_infrastructure_provider{clusterType="SNO"}

注: 如果单一节点受管集群上启用了 ObservabilitySpec.resources.CPU.limits 参数,则不要设置 ObservabilitySpec.resources.CPU.limits 参数。当您设置 CPU 限制时,它会导致 Observability pod 针对受管集群的容量计算。请参阅附加资源部分中的管理工作负载分区

1.5.2.1. 查看历史数据

当您查询历史数据时,手动设置查询参数选项来控制从仪表板显示的数据量。完成以下步骤:

  1. 在 hub 集群中,选择控制台标头中的 Grafana 链接
  2. 选择 Edit Panel 来编辑集群仪表板。
  3. 在 Grafana 中的 Query 前端数据源中,点 Query 选项卡。
  4. 选择 $datasource
  5. 如果要查看更多数据,请增加 Step 参数部分的值。如果 Step parameter 部分为空,它会被自动计算。
  6. 找到 Custom query parameters 字段,然后选择 max_source_resolution=auto
  7. 要验证是否显示数据,请刷新 Grafana 页面。

您的查询数据会出现在 Grafana 仪表板中。

1.5.2.2. 查看 Red Hat Advanced Cluster Management 仪表板

当您启用 Red Hat Advanced Cluster Management Observability 服务时,会提供三个仪表板。查看以下仪表板描述:

  • Alert Analysis :正在在受管集群中生成的警报的概述仪表板。
  • Clusters by Alert:警报仪表板,您可以根据警报名称过滤。
  • Alerts by Cluster: 警报仪表板,您可以按集群过滤,并查看在集群环境中启动或待处理的警报的实时数据。

1.5.2.3. 查看 etcd 表

您还可以在 Grafana 中的 hub 集群仪表板中查看 etcd 表,以了解 etcd 作为数据存储的稳定性。从 hub 集群中选择 Grafana 链接来查看从 hub 集群收集的 etcd 表数据。此时会显示跨受管集群的领导选举更改

1.5.2.4. 查看 Kubernetes API 服务器仪表板

要查看过去 7 或 30 天、关闭和非关闭集群以及 API Server Request Duration 超过或满足 目标服务级别目标 (SLO)值的集群总数,请使用以下选项来查看 Kubernetes API 服务器仪表板:

  • 在 Grafana 中的 hub 集群仪表板中查看集群 fleet Kubernetes API 服务级别概述。

    1. 进入到 Grafana 仪表板。
    2. 选择 Kubernetes > Service-Level Overview > API Server 来访问受管仪表板菜单。此时会显示 Fleet OverviewTop Cluster 的详情。
  • 在 Grafana 中的 hub 集群仪表板中查看 Kubernetes API 服务级别概述表,以查看过去 7 或 30 天、剩余停机时间和趋势的错误预算。

    1. 从 hub 集群中进入到 Grafana 仪表板。
    2. 选择 Kubernetes > Service-Level Overview > API Server 来访问受管仪表板菜单。此时会显示 Fleet OverviewTop Cluster 的详情。

1.5.2.5. 查看 OpenShift Virtualization 仪表板

您可以查看 Red Hat OpenShift Virtualization 仪表板,以查看安装 OpenShift Virtualization Operator 的每个集群的全面见解。此时会显示 Operator 的状态,它由活跃的 OpenShift Virtualization 警报和 Hyperconverged Cluster Operator 的条件决定。另外,您可以查看正在运行的虚拟机数量和每个集群的 operator 版本。

仪表板还列出影响 Operator 健康的警报,并单独包括所有 OpenShift Virtualization 警报,甚至不会影响 Operator 健康的警报。您可以根据集群名称、Operator 健康警报、警报健康影响和警报严重性过滤仪表板。

1.5.3. 其他资源

1.5.4. 使用 Grafana 仪表板

使用 Grafana 仪表板查看 hub 集群和受管集群指标。Grafana 警报仪表板中显示的数据依赖于来自受管集群的 警报 指标。警报 指标不会影响将警报转发到 hub 集群上的 Red Hat Advanced Cluster Management 警报管理器。因此,指标和警报有不同的传播机制,并遵循单独的代码路径。

即使在 Grafana 警报仪表板中看到数据,这无法保证受管集群警报成功转发到 Red Hat Advanced Cluster Management hub 集群警报管理器。如果从受管集群传播指标,您可以查看 Grafana 警报仪表板中显示的数据。

要将 Grafana 仪表板用于您的开发需求,请完成以下操作:

1.5.4.1. 设置 Grafana 开发人员实例

您可以通过创建一个 grafana-dev 实例来设计 Grafana 仪表板。确保使用最当前的 grafana-dev 实例。

完成以下步骤以设置 Grafana 开发人员实例:

  1. 克隆 open-cluster-management/multicluster-observability-operator/ 存储库,以便您可以运行 tools 文件夹中的脚本。
  2. 运行 setup-grafana-dev.sh 来设置 Grafana 实例。运行脚本时,会创建以下资源: secret/grafana-dev-configdeployment.apps/grafana-devservice/grafana-devingress.extensions/grafana-devpersistentvolumeclaim/grafana-dev

    ./setup-grafana-dev.sh --deploy
    secret/grafana-dev-config created
    deployment.apps/grafana-dev created
    service/grafana-dev created
    serviceaccount/grafana-dev created
    clusterrolebinding.rbac.authorization.k8s.io/open-cluster-management:grafana-crb-dev created
    route.route.openshift.io/grafana-dev created
    persistentvolumeclaim/grafana-dev created
    oauthclient.oauth.openshift.io/grafana-proxy-client-dev created
    deployment.apps/grafana-dev patched
    service/grafana-dev patched
    route.route.openshift.io/grafana-dev patched
    oauthclient.oauth.openshift.io/grafana-proxy-client-dev patched
    clusterrolebinding.rbac.authorization.k8s.io/open-cluster-management:grafana-crb-dev patched
  3. 使用 switch-to-grafana-admin.sh 脚本将用户角色切换到 Grafana 管理员。

    1. 选择 Grafana URL https:grafana-dev-open-cluster-management-observability.{OPENSHIFT_INGRESS_DOMAIN},并登录。
    2. 然后,运行以下命令来添加切换的用户作为 Grafana 管理员。例如,在使用 kubeadmin 登录后,运行以下命令:

      ./switch-to-grafana-admin.sh kube:admin
      User <kube:admin> switched to be grafana admin

Grafana 开发人员实例已设置。

1.5.4.1.1. 验证 Grafana 版本

使用命令行界面(CLI)或者从 Grafana 用户界面验证 Grafana 版本。

登录到 hub 集群后,访问 observabilty-grafana pod 终端。运行以下命令:

grafana-cli

当前在集群环境中部署的 Grafana 版本会被显示。

另外,您还可以导航到 Grafana 仪表板中的 Manage 选项卡。滚动到页面的末尾,其中列出了版本。

1.5.4.2. 设计您的 Grafana 仪表板

设置 Grafana 实例后,您可以设计仪表板。完成以下步骤以刷新 Grafana 控制台并设计您的仪表板:

  1. 在 Grafana 控制台中,通过在导航面板中选择 Create 图标来创建仪表板。选择 Dashboard,然后单击 Add new panel
  2. New Dashboard/Edit Panel 视图中导航到 Query 选项卡。
  3. 从数据源选择器中选择 Observatorium 并输入 PromQL 查询来配置查询。
  4. 在 Grafana 仪表板标头中点击仪表板标头中的 Save 图标。
  5. 添加一个描述性名称并点 Save
1.5.4.2.1. 使用 ConfigMap 设计 Grafana 仪表板

使用 ConfigMap 设计 Grafana 仪表板。您可以使用 generate-dashboard-configmap-yaml.sh 脚本在本地生成仪表板 ConfigMap,并在本地保存 ConfigMap:

./generate-dashboard-configmap-yaml.sh "Your Dashboard Name"
Save dashboard <your-dashboard-name> to ./your-dashboard-name.yaml

如果您没有运行上述脚本的权限,请完成以下步骤:

  1. 选择一个仪表板并点 Dashboard settings 图标。
  2. 在导航框中,点 JSON Model 图标。
  3. 复制仪表板 JSON 数据,并将它粘贴到 data 部分。
  4. 修改 name 并替换 $your-dashboard-name。在 data.$your-dashboard-name.json.$$your_dashboard_jsonuid 项中输入一个 UUID(universally unique identifier)。您可以使用 uuidegen 等程序来创建 UUID。ConfigMap 可能类似以下文件:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: $your-dashboard-name
      namespace: open-cluster-management-observability
      labels:
        grafana-custom-dashboard: "true"
    data:
      $your-dashboard-name.json: |-
        $your_dashboard_json

    备注:

    • 如果在 grafana-dev 实例中创建了仪表板,您可以使用仪表板的名称,并在脚本中将其作为参数传递。例如,在 grafana-dev 实例中创建一个名为 Demo Dashboard 的仪表板。通过 CLI,您可以运行以下脚本:

      ./generate-dashboard-configmap-yaml.sh "Demo Dashboard"

      运行脚本后,您可能会收到以下信息:

      Save dashboard <demo-dashboard> to ./demo-dashboard.yaml
    • 如果您的仪表板不在 General 文件夹中,您可以在此 ConfigMap 的 annotations 部分中指定文件夹名称:

      annotations:
        observability.open-cluster-management.io/dashboard-folder: Custom

      完成 ConfigMap 的更新后,您可以安装它,将仪表板导入到 Grafana 实例。

通过 CLI 或 OpenShift Container Platform 控制台应用 YAML 文件来验证是否已创建 YAML 文件。创建 open-cluster-management-observability 命名空间中的 ConfigMap。通过 CLI 运行以下命令:

oc apply -f demo-dashboard.yaml

在 OpenShift Container Platform 控制台中,使用 demo-dashboard.yaml 文件创建 ConfigMap。控制面板位于 Custom 文件夹中。

1.5.4.3. 卸载 Grafana 开发者实例

卸载实例时,相关资源也会被删除。运行以下命令:

./setup-grafana-dev.sh --clean
secret "grafana-dev-config" deleted
deployment.apps "grafana-dev" deleted
serviceaccount "grafana-dev" deleted
route.route.openshift.io "grafana-dev" deleted
persistentvolumeclaim "grafana-dev" deleted
oauthclient.oauth.openshift.io "grafana-proxy-client-dev" deleted
clusterrolebinding.rbac.authorization.k8s.io "open-cluster-management:grafana-crb-dev" deleted

1.5.4.4. 其他资源

1.5.5. 在 Grafana 中使用受管集群标签

启用受管集群标签,将它们用于 Grafana 仪表板。当在 hub 集群中启用可观察性时,observability-managed-cluster-label-allowlist ConfigMap 会在 open-cluster-management-observability 命名空间中创建。ConfigMap 包含由 observabilty-rbac-query-proxy pod 维护的受管集群标签列表,用于在 ACM - Cluster Overview Grafana 仪表板中填充要过滤的标签名称列表。默认情况下,可观察性会忽略 observability-managed-cluster-label-allowlist ConfigMap 中的标签子集。

当集群导入到受管集群团队或修改时,observability-rbac-query-proxy pod 会监视对受管集群标签的任何更改,并自动更新 observability-managed-cluster-label-allowlist ConfigMap 以反映更改。ConfigMap 仅包含唯一的标签名称,这些名称包含在 ignore_labelslabels 列表中。您的 observability-managed-cluster-label-allowlist ConfigMap 可能类似以下 YAML 文件:

data:
  managed_cluster.yaml: |
    ignore_labels: 1
      - clusterID
      - cluster.open-cluster-management.io/clusterset
      - feature.open-cluster-management.io/addon-application-manager
      - feature.open-cluster-management.io/addon-cert-policy-controller
      - feature.open-cluster-management.io/addon-cluster-proxy
      - feature.open-cluster-management.io/addon-config-policy-controller
      - feature.open-cluster-management.io/addon-governance-policy-framework
      - feature.open-cluster-management.io/addon-iam-policy-controller
      - feature.open-cluster-management.io/addon-observability-controller
      - feature.open-cluster-management.io/addon-search-collector
      - feature.open-cluster-management.io/addon-work-manager
      - installer.name
      - installer.namespace
      - local-cluster
      - name
    labels: 2
      - cloud
      - vendor

+ <1> 任何 ConfigMap 的 ignore_labels keylist 中列出的标签已从 ACM - Clusters Overview Grafana 仪表板上的下拉列表中删除。<2> 在 ACM - Clusters Overview Grafana 仪表板的下拉列表中显示启用的标签。值来自 acm_managed_cluster_labels 指标,具体取决于所选 label 键值。

继续阅读如何在 Grafana 中使用受管集群标签:

1.5.5.1. 添加受管集群标签

当您向 observability-managed-cluster-label-allowlist ConfigMap 中添加受管集群标签时,标签将作为 Grafana 中的过滤器选项提供。为 hub 集群或与受管集群团队关联的受管集群对象添加唯一标签。例如,如果您将标签 department=finance 添加到受管集群,则 ConfigMap 会被更新,并可能类似以下更改:

data:
  managed_cluster.yaml: |
    ignore_labels:
      - clusterID
      - cluster.open-cluster-management.io/clusterset
      - feature.open-cluster-management.io/addon-application-manager
      - feature.open-cluster-management.io/addon-cert-policy-controller
      - feature.open-cluster-management.io/addon-cluster-proxy
      - feature.open-cluster-management.io/addon-config-policy-controller
      - feature.open-cluster-management.io/addon-governance-policy-framework
      - feature.open-cluster-management.io/addon-iam-policy-controller
      - feature.open-cluster-management.io/addon-observability-controller
      - feature.open-cluster-management.io/addon-search-collector
      - feature.open-cluster-management.io/addon-work-manager
      - installer.name
      - installer.namespace
      - local-cluster
      - name
    labels:
      - cloud
      - department
      - vendor

1.5.5.2. 启用受管集群标签

通过从 observability-managed-cluster-label-allowlist ConfigMap 中的 ignore_labels 列表中删除标签来启用已禁用的受管集群标签。

例如,启用 local-clustername 标签。您的 observability-managed-cluster-label-allowlist ConfigMap 可能类似以下内容:

data:
  managed_cluster.yaml: |
    ignore_labels:
      - clusterID
      - installer.name
      - installer.namespace
    labels:
      - cloud
      - vendor
      - local-cluster
      - name

ConfigMap 在 30 秒后重新同步,以确保更新了集群标签。更新 ConfigMap 后,检查 open-cluster-management-observability 命名空间中的 observability-rbac-query-proxy pod 日志,以验证列出标签的位置。pod 日志中可能会显示以下信息:

enabled managedcluster labels: <label>

在 Grafana 仪表板中,验证标签是否在 Label 下拉菜单中选择。

1.5.5.3. 禁用受管集群标签

Label 下拉菜单过滤器中列出的受管集群标签排除受管集群标签。将标签名称添加到 ignore_labels 列表中。例如,如果您将 local-clustername 重新添加到 ignore_labels 列表中,您的 YAML 可能类似以下文件:

data:
  managed_cluster.yaml: |
    ignore_labels:
      - clusterID
      - installer.name
      - installer.namespace
      - local-cluster
      - name
    labels:
      - cloud
      - vendor

检查 open-cluster-management-observability 命名空间中的 observability-rbac-query-proxy pod 日志,以验证列出标签的位置。pod 日志中可能会显示以下信息:

disabled managedcluster label: <label>

1.5.5.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.