$ TOKEN=$(oc whoami -t)
在 OpenShift Dedicated 中,您可以通过命令行界面 (CLI) 访问某些监控组件的 Web 服务 API。
在某些情况下,访问 API 端点会降低集群的性能和可扩展性,尤其是在使用端点检索、发送或查询大量指标数据时。 为避免这些问题,请遵循以下建议
|
您可以直接从命令行访问以下监控堆栈组件的 Web 服务 API 端点
Prometheus
Alertmanager
Thanos Ruler
Thanos Querier
要访问 Thanos Ruler 和 Thanos Querier 服务 API,请求帐户必须对命名空间资源具有“获取”权限,这可以通过将 |
访问监控组件的 Web 服务 API 端点时,请注意以下限制
您只能使用 bearer 令牌身份验证来访问 API 端点。
您只能访问路由中/api
路径中的端点。如果您尝试在 Web 浏览器中访问 API 端点,则会发生应用程序不可用
错误。要在 Web 浏览器中访问监控功能,请使用 OpenShift Dedicated Web 控制台查看监控仪表板。
以下示例显示了如何查询用于核心平台监控的 Alertmanager 服务的服务 API 接收器。您可以使用类似的方法来访问核心平台 Prometheus 的prometheus-k8s
服务和 Thanos Ruler 的thanos-ruler
服务。
您已登录到与openshift-monitoring
命名空间中的monitoring-alertmanager-edit
角色绑定的帐户。
您已登录到拥有获取 Alertmanager API 路由权限的帐户。
如果您的帐户没有获取 Alertmanager API 路由的权限,集群管理员可以提供该路由的 URL。 |
运行以下命令提取身份验证令牌
$ TOKEN=$(oc whoami -t)
运行以下命令提取alertmanager-main
API 路由 URL
$ HOST=$(oc -n openshift-monitoring get route alertmanager-main -ojsonpath={.status.ingress[].host})
运行以下命令查询 Alertmanager 的服务 API 接收器
$ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v2/receivers"
您可以使用 Prometheus 的联邦端点从集群外部的网络位置抓取平台和用户定义的指标。为此,请通过 OpenShift 专用路由访问集群的 Prometheus /federate
端点。
使用联邦时,检索指标数据会存在延迟。此延迟可能会影响抓取指标的准确性和及时性。 使用联邦端点也可能会降低集群的性能和可扩展性,尤其是在使用联邦端点检索大量指标数据时。为避免这些问题,请遵循以下建议
如果您需要将大量数据转发到集群外部,请改用远程写入。有关更多信息,请参阅“配置远程写入存储”部分。 |
您已安装 OpenShift CLI(oc
)。
您可以作为具有cluster-monitoring-view
集群角色的用户访问集群,或者已获得对namespaces
资源具有get
权限的令牌。
您只能使用令牌身份验证来访问 Prometheus 联邦端点。 |
您已登录到拥有获取 Prometheus 联邦路由权限的帐户。
如果您的帐户没有获取 Prometheus 联邦路由的权限,集群管理员可以提供该路由的 URL。 |
运行以下命令检索令牌
$ TOKEN=$(oc whoami -t)
运行以下命令获取 Prometheus 联邦路由 URL
$ HOST=$(oc -n openshift-monitoring get route prometheus-k8s-federate -ojsonpath={.status.ingress[].host})
从/federate
路由查询指标。以下示例命令查询up
指标
$ curl -G -k -H "Authorization: Bearer $TOKEN" https://$HOST/federate --data-urlencode 'match[]=up'
# 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
...
在使用用户定义的项目监控您自己的服务时,您可以从集群外部查询 Prometheus 指标。通过使用thanos-querier
路由从集群外部访问此数据。
此访问仅支持使用令牌进行身份验证。
您已部署了自己的服务,遵循“为用户定义的项目启用监控”步骤。
您已登录到具有cluster-monitoring-view
集群角色的帐户,该角色提供访问 Thanos Querier API 的权限。
您已登录到拥有获取 Thanos Querier API 路由权限的帐户。
如果您的帐户没有获取 Thanos Querier API 路由的权限,集群管理员可以提供该路由的 URL。 |
运行以下命令提取连接到 Prometheus 的身份验证令牌
$ TOKEN=$(oc whoami -t)
运行以下命令提取thanos-querier
API 路由 URL
$ HOST=$(oc -n openshift-monitoring get route thanos-querier -ojsonpath={.status.ingress[].host})
使用以下命令将命名空间设置为您的服务正在运行的命名空间
$ NAMESPACE=ns1
运行以下命令在命令行中查询您自己服务的指标
$ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v1/query?" --data-urlencode "query=up{namespace='$NAMESPACE'}"
输出显示 Prometheus 正在抓取的每个应用程序 pod 的状态
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "up",
"endpoint": "web",
"instance": "10.129.0.46:8080",
"job": "prometheus-example-app",
"namespace": "ns1",
"pod": "prometheus-example-app-68d47c4fb6-jztp2",
"service": "prometheus-example-app"
},
"value": [
1591881154.748,
"1"
]
}
],
}
}
|
本文档描述了由集群监控操作员 (CMO) 部署和管理的以下资源
当您要配置 API 端点连接以检索、发送或查询指标数据时,请使用此信息。
在某些情况下,访问 API 端点会降低集群的性能和可扩展性,尤其是在使用端点检索、发送或查询大量指标数据时。 为避免这些问题,请遵循以下建议
|
公开在端口 8443 上验证PrometheusRules
和AlertmanagerConfig
自定义资源的准入 Webhook 服务。
在集群中公开以下端口的用户定义的 Alertmanager Web 服务器
端口 9095 提供对 Alertmanager 端点的访问。授予访问权限需要将用户绑定到openshift-user-workload-monitoring
项目中的monitoring-alertmanager-api-reader
角色(用于只读操作)或monitoring-alertmanager-api-writer
角色。
端口 9092 提供对限制在给定项目的 Alertmanager 端点的访问。授予访问权限需要将用户绑定到项目中的monitoring-rules-edit
集群角色或monitoring-edit
集群角色。
端口 9097 只提供对/metrics
端点的访问。此端口用于内部使用,不保证其他用途。
在集群中通过以下端口公开 Alertmanager web 服务器:
端口 9094 提供对所有 Alertmanager 端点的访问。授予访问权限需要将用户绑定到openshift-monitoring
项目中的monitoring-alertmanager-view
角色(仅限读取操作)或monitoring-alertmanager-edit
角色。
端口 9092 提供对限制在给定项目的 Alertmanager 端点的访问。授予访问权限需要将用户绑定到项目中的monitoring-rules-edit
集群角色或monitoring-edit
集群角色。
端口 9097 只提供对/metrics
端点的访问。此端口用于内部使用,不保证其他用途。
在集群中通过以下端口公开 kube-state-metrics /metrics
端点:
端口 8443 提供对 Kubernetes 资源指标的访问。此端口用于内部使用,不保证其他用途。
端口 9443 提供对内部 kube-state-metrics 指标的访问。此端口用于内部使用,不保证其他用途。
在集群中通过以下端口公开 openshift-state-metrics /metrics
端点:
端口 8443 提供对 OpenShift 资源指标的访问。此端口用于内部使用,不保证其他用途。
端口 9443 提供对内部openshift-state-metrics
指标的访问。此端口用于内部使用,不保证其他用途。
在集群中通过以下端口公开 Prometheus web 服务器:
端口 9091 提供对所有 Prometheus 端点的访问。授予访问权限需要将用户绑定到cluster-monitoring-view
集群角色。
端口 9092 只提供对/metrics
和/federate
端点的访问。此端口用于内部使用,不保证其他用途。
在集群中通过以下端口公开 Prometheus web 服务器:
端口 9091 只提供对/metrics
端点的访问。此端口用于内部使用,不保证其他用途。
端口 9092 只提供对/federate
端点的访问。授予访问权限需要将用户绑定到cluster-monitoring-view
集群角色。
这也公开了 Thanos sidecar web 服务器在端口 10902 上的/metrics
端点。此端口用于内部使用,不保证其他用途。
在集群中通过以下端口公开 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
端点的访问。此端口用于内部使用,不保证其他用途。