1.5. 使用可观察性


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

1.5.1. 使用 observability API 查询指标

Observability 提供了一个外部 API,用于通过 OpenShift 路由(rbac-query-proxy)查询指标。请参见以下选项以获取对 rbac-query-proxy 路由的查询:

  • 您可以使用以下命令获取路由的详情:

    oc get route rbac-query-proxy -n open-cluster-management-observability
  • 您还可以使用 OpenShift OAuth 访问令牌访问 rbac-query-proxy 路由。该令牌应当与用户或服务帐户关联,该帐户有权获取命名空间。如需更多信息,请参阅管理用户拥有的 OAuth 访问令牌

完成以下步骤,为可观察性创建 proxy-byo-cert secret:

  1. 获取默认 CA 证书,并将密钥 tls.crt 的内容存储在本地文件中。运行以下命令:

    oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt
  2. 运行以下命令以查询指标:

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

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

  3. 运行以下命令,使用生成的证书创建 proxy-byo-ca secret:

    oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
  4. 使用以下命令,使用生成的证书创建 proxy-byo-cert secret:

    oc -n open-cluster-management-observability create secret tls proxy-byo-cert --cert ./ingress.crt --key ./ingress.key

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

将指标导出到外部端点,实时支持 Prometheus 远程写入规格。完成以下步骤,将指标导出到外部端点:

  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: |
        url: http://victoriametrics:8428/api/v1/write
        http_client_config:
          basic_auth:
            username: test
            password: test

    ep.yaml 是内容的密钥,在下一步中 MultiClusterObservability 自定义资源中使用。目前,可观察性支持在不进行安全检查的情况下将指标导出到端点,以及基本身份验证或 tls 启用。查看下表以了解支持的参数的完整列表:

    Name描述模式

    url
    必需

    外部端点的 URL。

    字符串

    http_client_config
    optional

    HTTP 客户端的高级配置。

    HttpClientConfig

    HttpClientConfig

    Name描述模式

    basic_auth
    可选

    用于基本身份验证的 HTTP 客户端配置。

    BasicAuth

    tls_config
    optional

    TLS 的 HTTP 客户端配置。

    TLSConfig

    BasicAuth

    Name描述模式

    username
    可选

    基本授权的用户名。

    字符串

    password
    可选

    基本授权的密码。

    字符串

    TLSConfig

    Name

    描述

    模式

    secret_name
    必需

    包含证书的 secret 的名称。

    字符串

    ca_file_key
    optional

    secret 中的 CA 证书的密钥(只在 insecure_skip_verify 设为 true 时才为可选)。

    字符串

    cert_file_key
    required

    secret 中客户端证书的密钥。

    字符串

    key_file_key
    required

    机密中的客户端密钥的键。

    字符串

    insecure_skip_verify
    optional

    用于跳过目标证书的验证参数。

    bool

  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.3. 使用仪表板查看和查找数据

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

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

注: 如果在单一节点受管集群中启用了可观察性,请不要设置 ObservabilitySpec.resources.CPU.limits 参数。当您设置 CPU 限制时,observability pod 会计算为受管集群的容量。请参阅附加资源部分中的管理工作负载分区

1.5.3.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.3.2. 查看 Red Hat Advanced Cluster Management 仪表板

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

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

1.5.3.3. 查看 etcd 表

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

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

查看以下选项以查看 Kubernetes API 服务器仪表板:

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

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

      在过去 7 或 30 天期间,超过 或满足目标服务级别目标 (SLO)值的集群总数,关闭和非关闭集群,并显示 API Server Request Duration。

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

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

      显示过去七或 30 天的错误预算,剩余停机时间和趋势。

1.5.3.5. 查看 OpenShift Virtualization 仪表板

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

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

1.5.4. 其他资源

1.5.5. 使用 Grafana 仪表板

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

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

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

1.5.5.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.5.1.1. 验证 Grafana 版本

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

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

grafana-cli

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

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

1.5.5.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.5.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.5.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.5.4. 其他资源

1.5.6. 在 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.6.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.6.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.6.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.6.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.