5.3. 使用 CLI 访问监控 API
在 OpenShift Container Platform 中,您可以从命令行界面(CLI)访问一些监控组件的 Web 服务 API。
在某些情况下,访问 API 端点可能会降低集群的性能和可扩展性,特别是在使用端点来检索、发送或查询大量指标数据时。
要避免这些问题,请考虑以下建议:
- 避免频繁查询端点。将查询限制为每 30 秒最多一个。
- 
							不要通过 Prometheus 的 /federate端点检索所有指标数据。只有在您要检索有限、聚合的数据集时才会查询端点。例如,检索每个请求数量少于 1,000 个样本,有助于最大程度降低性能下降的风险。
5.3.1. 关于访问监控 Web 服务 API
您可以从命令行直接访问以下监控堆栈组件的 Web 服务 API 端点:
- Prometheus
- Alertmanager
- Thanos Ruler
- Thanos querier
						要访问 Thanos Ruler 和 Thanos Querier 服务 API,请求的帐户必须具有命名空间资源的 get 权限,这些资源可通过向帐户授予 cluster-monitoring-view 集群角色来完成。
					
当您访问监控组件的 Web 服务 API 端点时,请注意以下限制:
- 您只能使用 bearer 令牌身份验证来访问 API 端点。
- 
							您只能访问路由的 /api路径中的端点。如果您试图在 Web 浏览器中访问 API 端点,则会出现一个Application is not available的错误。要在网页浏览器中访问监控功能,请使用 OpenShift Container Platform Web 控制台查看监控仪表板。
5.3.2. 访问监控 Web 服务 API
					以下示例演示了如何查询服务 API 接收器以获取核心平台监控中使用的 Alertmanager 服务。您可以使用类似的方法访问核心平台 Prometheus 的 prometheus-k8s 服务,以及 Thanos Ruler 的 thanos-ruler 服务。
				
先决条件
- 
							您已登录到与 openshift-monitoring命名空间中的monitoring-alertmanager-edit角色绑定的帐户。
- 已登陆到一个有权获取 Alertmanager API 路由的帐户。 注意- 如果您的帐户没有获取 Alertmanager API 路由的权限,集群管理员可以提供路由的 URL。 
流程
- 运行以下命令来提取身份验证令牌: - TOKEN=$(oc whoami -t) - $ TOKEN=$(oc whoami -t)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令提取 - alertmanager-mainAPI 路由 URL:- HOST=$(oc -n openshift-monitoring get route alertmanager-main -ojsonpath='{.status.ingress[].host}')- $ HOST=$(oc -n openshift-monitoring get route alertmanager-main -ojsonpath='{.status.ingress[].host}')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,查询 Alertmanager 的服务 API 接收器: - curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v2/receivers" - $ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v2/receivers"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.3.3. 使用 Prometheus 的联邦端点查询指标
					您可以使用 Prometheus 的联邦端点从集群外的网络位置提取平台和用户定义的指标。为此,请通过 OpenShift Container Platform 路由访问集群的 Prometheus /federate 端点。
				
使用联邦时检索指标数据的延迟。这个延迟可能会影响提取指标的准确性和时间表。
使用联邦端点也可以降低集群的性能和可扩展性,特别是在使用联邦端点来获取大量指标数据时。要避免这些问题,请遵循以下建议:
- 不要尝试通过 Prometheus 的联邦端点检索所有指标数据。只有在您要检索有限、聚合的数据集时才会查询。例如,检索每个请求数量少于 1,000 个样本,有助于最大程度降低性能下降的风险。
- 避免频繁查询 Prometheus 的联邦端点。将查询限制为每 30 秒最多一个。
如果您需要在集群外转发大量数据,请使用远程写入。如需更多信息,请参阅配置远程写入存储部分。
先决条件
- 
							已安装 OpenShift CLI(oc)。
- 您可以使用具有 - cluster-monitoring-view集群角色的用户,或者获取了对- 命名空间资源具有- get权限的 bearer 令牌来访问集群。注意- 您只能使用 bearer 令牌身份验证来访问 Prometheus 联邦端点。 
- 已登陆到一个有权获取 Prometheus 联邦路由的帐户。 注意- 如果您的帐户没有获取 Prometheus 联邦路由的权限,集群管理员可以提供路由的 URL。 
流程
- 运行以下命令来检索 bearer 令牌: - TOKEN=$(oc whoami -t) - $ TOKEN=$(oc whoami -t)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来获取 Prometheus 联邦路由 URL: - HOST=$(oc -n openshift-monitoring get route prometheus-k8s-federate -ojsonpath='{.status.ingress[].host}')- $ HOST=$(oc -n openshift-monitoring get route prometheus-k8s-federate -ojsonpath='{.status.ingress[].host}')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 查询 - /federate路由的指标。以下示例命令- up指标 :- curl -G -k -H "Authorization: Bearer $TOKEN" https://$HOST/federate --data-urlencode 'match[]=up' - $ curl -G -k -H "Authorization: Bearer $TOKEN" https://$HOST/federate --data-urlencode 'match[]=up'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - TYPE up untyped - # TYPE up untyped up{apiserver="kube-apiserver",endpoint="https",instance="10.0.143.148:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035322214 up{apiserver="kube-apiserver",endpoint="https",instance="10.0.148.166:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035338597 up{apiserver="kube-apiserver",endpoint="https",instance="10.0.173.16:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035343834 ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.3.4. 从集群外部访问自定义应用程序的指标
					在使用用户定义的项目监控您自己的服务时,您可以从集群外部查询 Prometheus 指标。使用 thanos-querier 路由从集群外部访问这些数据。
				
此访问仅支持使用 bearer 令牌进行身份验证。
先决条件
- 您已按照用户定义的项目启用监控部署了自己的服务。
- 
							您可以使用 cluster-monitoring-view集群角色登录到帐户,它提供访问 Thanos Querier API 的权限。
- 已登陆到一个有权获取 Thanos Querier API 路由的帐户。 注意- 如果您的帐户没有权限获取 Thanos Querier API 路由,集群管理员可以提供路由的 URL。 
流程
- 运行以下命令,提取身份验证令牌以连接到 Prometheus: - TOKEN=$(oc whoami -t) - $ TOKEN=$(oc whoami -t)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,提取 - thanos-querierAPI 路由 URL:- HOST=$(oc -n openshift-monitoring get route thanos-querier -ojsonpath='{.status.ingress[].host}')- $ HOST=$(oc -n openshift-monitoring get route thanos-querier -ojsonpath='{.status.ingress[].host}')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下命令,将命名空间设置为运行服务的命名空间: - NAMESPACE=ns1 - $ NAMESPACE=ns1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,在命令行中查询您自己的服务的指标: - curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v1/query?" --data-urlencode "query=up{namespace='$NAMESPACE'}"- $ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v1/query?" --data-urlencode "query=up{namespace='$NAMESPACE'}"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出显示 Prometheus 提取的每个应用程序 pod 的状态: - 格式的示例输出 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 
										格式的示例输出使用过滤工具(如 jq)来提供格式化的缩进 JSON。有关使用jq的更多信息,请参阅 jq Manual。
- 命令会请求 Thanos Querier 服务的一个即时查询端点,它会在某个时间点评估选择器。
 
- 
										格式的示例输出使用过滤工具(如 
5.3.5. Cluster Monitoring Operator 的资源参考
本文档描述了由 Cluster Monitoring Operator (CMO) 部署和管理的以下资源:
当您要配置 API 端点连接以检索、发送或查询指标数据时,请使用此信息。
在某些情况下,访问端点可能会降低集群的性能和可扩展性,特别是在使用端点来检索、发送或查询大量指标数据时。
要避免这些问题,请遵循以下建议:
- 避免频繁查询端点。将查询限制为每 30 秒最多一个。
- 
								不要尝试通过 /federate端点检索所有指标数据。只有在您要检索有限、聚合的数据集时才会查询。例如,检索每个请求数量少于 1,000 个样本,有助于最大程度降低性能下降的风险。
5.3.5.1. CMO 路由资源
5.3.5.1.1. openshift-monitoring/alertmanager-main
							通过路由器公开 alertmanager-main 服务的 /api 端点。
						
5.3.5.1.2. openshift-monitoring/prometheus-k8s
							通过路由器公开 prometheus-k8s 服务的 /api 端点。
						
5.3.5.1.3. openshift-monitoring/prometheus-k8s-federate
							通过路由器公开 prometheus-k8s 服务的 /federate 端点。
						
5.3.5.1.4. openshift-user-workload-monitoring/federate
							通过路由器公开 prometheus-user-workload 服务的 /federate 端点。
						
5.3.5.1.5. openshift-monitoring/thanos-querier
							通过路由器公开 thanos-querier 服务的 /api 端点。
						
							通过路由器公开 thanos-ruler 服务的 /api 端点。
						
5.3.5.2. CMO 服务资源
							公开准入 Webhook 服务,在端口 8443 上验证 PrometheusRules 和 AlertmanagerConfig 自定义资源。
						
在以下端口上公开用户定义的 Alertmanager Web 服务器:
- 
									端口 9095 提供对 Alertmanager 端点的访问。授予访问权限需要将用户绑定到 monitoring-alertmanager-api-reader角色(用于只读操作)或openshift-user-workload-monitoring项目中的monitoring-alertmanager-api-writer角色。
- 
									端口 9092 提供对限制在给定项目的 Alertmanager 端点的访问。授予访问权限需要将用户绑定到 monitoring-rules-edit集群角色或monitoring-edit集群角色。
- 
									端口 9097 仅提供对 /metrics端点的访问。此端口用于内部使用,无法保证其他使用。
5.3.5.2.3. openshift-monitoring/alertmanager-main
在以下端口集群中公开 Alertmanager Web 服务器:
- 
									端口 9094 提供对所有 Alertmanager 端点的访问。授予访问权限需要将用户绑定到 monitoring-alertmanager-view(用于只读操作)或monitoring-alertmanager-edit角色(用于openshift-monitoring项目中)。
- 
									端口 9092 提供对限制在给定项目的 Alertmanager 端点的访问。授予访问权限需要将用户绑定到 monitoring-rules-edit集群角色或monitoring-edit集群角色。
- 
									端口 9097 仅提供对 /metrics端点的访问。此端口用于内部使用,无法保证其他使用。
5.3.5.2.4. openshift-monitoring/kube-state-metrics
							在以下端口上公开集群中的 kube-state-metrics /metrics 端点:
						
- 端口 8443 提供对 Kubernetes 资源指标的访问。此端口用于内部使用,无法保证其他使用。
- 端口 9443 提供对内部 kube-state-metrics 指标的访问。此端口用于内部使用,无法保证其他使用。
5.3.5.2.5. openshift-monitoring/metrics-server
在端口 443 上公开 metrics-server Web 服务器。此端口用于内部使用,无法保证其他使用。
5.3.5.2.6. openshift-monitoring/monitoring-plugin
在端口 9443 上公开监控插件服务。此端口用于内部使用,无法保证其他使用。
5.3.5.2.7. openshift-monitoring/node-exporter
							在端口 9100 上公开 /metrics 端点。此端口用于内部使用,无法保证其他使用。
						
5.3.5.2.8. openshift-monitoring/openshift-state-metrics
							在以下端口上公开集群中的 openshift-state-metrics /metrics 端点:
						
- 端口 8443 提供对 OpenShift 资源指标的访问。此端口用于内部使用,无法保证其他使用。
- 
									端口 9443 提供对内部 openshift-state-metrics指标的访问。此端口用于内部使用,无法保证其他使用。
5.3.5.2.9. openshift-monitoring/prometheus-adapter
							在端口 443 上公开 prometheus-adapter web 服务器。此端口用于内部使用,无法保证其他使用。
						
5.3.5.2.10. openshift-monitoring/prometheus-k8s
在以下端口集群中公开 Prometheus Web 服务器:
- 
									端口 9091 提供对所有 Prometheus 端点的访问。授予访问权限需要将用户绑定到 cluster-monitoring-view集群角色。
- 
									端口 9092 仅提供对 /metrics和/federate端点的访问。此端口用于内部使用,无法保证其他使用。
							在端口 8443 上公开 /metrics 端点。此端口用于内部使用,无法保证其他使用。
						
5.3.5.2.12. openshift-monitoring/prometheus-operator
							在端口 8443 上公开 /metrics 端点。此端口用于内部使用,无法保证其他使用。
						
在以下端口集群中公开 Prometheus Web 服务器:
- 
									端口 9091 仅提供对 /metrics端点的访问。此端口用于内部使用,无法保证其他使用。
- 
									端口 9092 仅提供对 /federate端点的访问。授予访问权限需要将用户绑定到cluster-monitoring-view集群角色。
							这也会在端口 10902 上公开 Thanos sidecar web 服务器的 /metrics 端点。此端口用于内部使用,无法保证其他使用。
						
5.3.5.2.14. openshift-monitoring/telemeter-client
							在端口 8443 上公开 /metrics 端点。此端口用于内部使用,无法保证其他使用。
						
5.3.5.2.15. openshift-monitoring/thanos-querier
在以下端口的集群中公开 Thanos Querier web 服务器:
- 
									端口 9091 提供对所有 Thanos Querier 端点的访问。授予访问权限需要将用户绑定到 cluster-monitoring-view集群角色。
- 
									端口 9092 提供对 /api/v1/query,/api/v1/query_range/,/api/v1/labels,/api/v1/label/*/values, 和/api/v1/series端点的访问,仅限于给定项目。授予访问权限需要将用户绑定到项目中的view集群角色。
- 
									端口 9093 提供对 /api/v1/alerts, 和/api/v1/rules的访问,仅限于给定项目。授予访问权限需要将用户绑定到monitoring-rules-edit、monitoring-edit或monitoring-rules-view集群角色。
- 
									端口 9094 仅提供对 /metrics端点的访问。此端口用于内部使用,无法保证其他使用。
在以下端口的集群中公开 Thanos Ruler web 服务器:
- 
									端口 9091 提供对所有 Thanos Ruler 端点的访问。授予访问权限需要将用户绑定到 cluster-monitoring-view集群角色。
- 
									端口 9092 仅提供对 /metrics端点的访问。此端口用于内部使用,无法保证其他使用。
这也会在端口 10901 上公开 gRPC 端点。此端口用于内部使用,无法保证其他使用。
							在端口 8443 上公开 /metrics 端点。此端口用于内部使用,无法保证其他使用。