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:
获取默认 CA 证书,并将密钥
tls.crt
的内容存储在本地文件中。运行以下命令:oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt
运行以下命令以查询指标:
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。运行以下命令,使用生成的证书创建
proxy-byo-ca
secret:oc -n open-cluster-management-observability create secret tls proxy-byo-ca --cert ./ca.crt --key ./ca.key
使用以下命令,使用生成的证书创建
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 远程写入规格。完成以下步骤,将指标导出到外部端点:
使用
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
optionalHTTP 客户端的高级配置。
HttpClientConfig
Name 描述 模式 basic_auth
可选用于基本身份验证的 HTTP 客户端配置。
tls_config
optionalTLS 的 HTTP 客户端配置。
BasicAuth
Name 描述 模式 username
可选基本授权的用户名。
字符串
password
可选基本授权的密码。
字符串
TLSConfig
Name
描述
模式
secret_name
必需包含证书的 secret 的名称。
字符串
ca_file_key
optionalsecret 中的 CA 证书的密钥(只在 insecure_skip_verify 设为 true 时才为可选)。
字符串
cert_file_key
requiredsecret 中客户端证书的密钥。
字符串
key_file_key
required机密中的客户端密钥的键。
字符串
insecure_skip_verify
optional用于跳过目标证书的验证参数。
bool
将
writeStorage
参数添加到MultiClusterObservability
自定义资源中,以添加您要导出的外部端点列表。查看以下示例:spec: storageConfig: writeStorage: 1 - key: ep.yaml name: victoriametrics
- 1
- 每个项目包含两个属性:name 和 key。name 是包含端点访问信息的 Kubernetes secret 的名称,key 是 secret 中内容的密钥。如果您在列表中添加多个项,则指标将导出到多个外部端点。
通过检查
acm_remote_write_requests_total
指标,在指标导出被启用后查看指标导出的状态。- 在 hub 集群的 OpenShift Container Platform 控制台中点 Observe 部分中的 Metrics 进入 Metrics 页面。
-
然后查询
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. 查看历史数据
当您查询历史数据时,手动设置查询参数选项来控制从仪表板显示的数据量。完成以下步骤:
- 在 hub 集群中,选择控制台标头中的 Grafana 链接。
- 选择 Edit Panel 来编辑集群仪表板。
- 在 Grafana 中的 Query 前端数据源中,点 Query 选项卡。
-
选择
$datasource
。 - 如果要查看更多数据,请增加 Step 参数部分的值。如果 Step parameter 部分为空,它会被自动计算。
-
找到 Custom query parameters 字段,然后选择
max_source_resolution=auto
。 - 要验证是否显示数据,请刷新 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 服务级别概述。
- 进入到 Grafana 仪表板。
选择 Kubernetes > Service-Level Overview > API Server 来访问受管仪表板菜单。此时会显示 Fleet Overview 和 Top Cluster 的详情。
在过去 7 或 30 天期间,超过 或满足目标服务级别目标 (SLO)值的集群总数,关闭和非关闭集群,并显示 API Server Request Duration。
在 Grafana 中的 hub 集群仪表板中查看 Kubernetes API 服务级别概述表。
- 从 hub 集群中进入到 Grafana 仪表板。
选择 Kubernetes > Service-Level Overview > API Server 来访问受管仪表板菜单。此时会显示 Fleet Overview 和 Top 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. 其他资源
- 如需更多信息,请参阅 Prometheus Remote-Write 规格。
- 读取 启用可观察服务。
- 如需更多主题,请返回到 Observability 服务。
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 开发人员实例:
-
克隆
open-cluster-management/multicluster-observability-operator/
存储库,以便您可以运行tools
文件夹中的脚本。 运行
setup-grafana-dev.sh
来设置 Grafana 实例。运行脚本时,会创建以下资源:secret/grafana-dev-config
、deployment.apps/grafana-dev
、service/grafana-dev
、ingress.extensions/grafana-dev
、persistentvolumeclaim/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
使用
switch-to-grafana-admin.sh
脚本将用户角色切换到 Grafana 管理员。-
选择 Grafana URL
https:grafana-dev-open-cluster-management-observability.{OPENSHIFT_INGRESS_DOMAIN}
,并登录。 然后,运行以下命令来添加切换的用户作为 Grafana 管理员。例如,在使用
kubeadmin
登录后,运行以下命令:./switch-to-grafana-admin.sh kube:admin User <kube:admin> switched to be grafana admin
-
选择 Grafana URL
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 控制台并设计您的仪表板:
- 在 Grafana 控制台中,通过在导航面板中选择 Create 图标来创建仪表板。选择 Dashboard,然后单击 Add new panel。
- 在 New Dashboard/Edit Panel 视图中导航到 Query 选项卡。
-
从数据源选择器中选择
Observatorium
并输入 PromQL 查询来配置查询。 - 在 Grafana 仪表板标头中点击仪表板标头中的 Save 图标。
- 添加一个描述性名称并点 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
如果您没有运行上述脚本的权限,请完成以下步骤:
- 选择一个仪表板并点 Dashboard settings 图标。
- 在导航框中,点 JSON Model 图标。
-
复制仪表板 JSON 数据,并将它粘贴到
data
部分。 修改
name
并替换$your-dashboard-name
。在data.$your-dashboard-name.json.$$your_dashboard_json
的uid
项中输入一个 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. 其他资源
- 请参阅 将指标导出到外部端点。
- 有关创建 UUID 的说明,请参阅 uuidegen。
- 如需了解更多详细信息,请参阅在 Grafana 中使用受管集群标签。
- 返回到使用 Grafana 仪表板页的开头。
- 有关主题,请参阅 Observing 环境介绍。
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_labels
或 labels
列表中。您的 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-cluster
和 name
标签。您的 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-cluster
和 name
重新添加到 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. 其他资源
- 请参阅使用 Grafana 仪表板。
- 返回到页面的开头,在 Grafana 中使用受管集群标签。