$ curl http://<example_app_endpoint>/metrics
您可以收集指标来监控集群组件和您自己的工作负载的性能。
在 OpenShift Dedicated 中,集群组件通过抓取通过服务端点公开的指标来监控。您还可以为用户定义的项目配置指标收集。指标使您可以监控集群组件和您自己的工作负载的性能。
您可以通过在应用程序级别使用 Prometheus 客户端库来定义您想要为自己的工作负载提供的指标。
在 OpenShift Dedicated 中,指标通过 /metrics
规范名称下的 HTTP 服务端点公开。您可以通过对 http://<endpoint>/metrics
运行 curl
查询来列出服务的所有可用指标。例如,您可以向prometheus-example-app
示例应用程序公开路由,然后运行以下命令以查看其所有可用指标
$ curl http://<example_app_endpoint>/metrics
# HELP http_requests_total Count of all HTTP requests
# TYPE http_requests_total counter
http_requests_total{code="200",method="get"} 4
http_requests_total{code="404",method="get"} 2
# HELP version Version information about this binary
# TYPE version gauge
version{version="v0.1.0"} 1
您可以创建一个ServiceMonitor
资源来从用户定义项目中的服务端点抓取指标。这假设您的应用程序使用 Prometheus 客户端库将指标公开到/metrics
规范名称。
本节描述如何在用户定义的项目中部署示例服务,然后创建一个ServiceMonitor
资源来定义应如何监控该服务。
要测试对用户定义项目中服务的监控,您可以部署示例服务。
您可以作为具有cluster-admin
集群角色的用户或作为具有命名空间管理权限的用户访问集群。
为服务配置创建 YAML 文件。在此示例中,它称为prometheus-example-app.yaml
。
将以下部署和服务配置详细信息添加到文件中
apiVersion: v1
kind: Namespace
metadata:
name: ns1
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: prometheus-example-app
name: prometheus-example-app
namespace: ns1
spec:
replicas: 1
selector:
matchLabels:
app: prometheus-example-app
template:
metadata:
labels:
app: prometheus-example-app
spec:
containers:
- image: ghcr.io/rhobs/prometheus-example-app:0.4.2
imagePullPolicy: IfNotPresent
name: prometheus-example-app
---
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus-example-app
name: prometheus-example-app
namespace: ns1
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: web
selector:
app: prometheus-example-app
type: ClusterIP
此配置在用户定义的ns1
项目中部署名为prometheus-example-app
的服务。此服务公开了自定义version
指标。
将配置应用于集群
$ oc apply -f prometheus-example-app.yaml
部署服务需要一些时间。
您可以检查 Pod 是否正在运行
$ oc -n ns1 get pod
NAME READY STATUS RESTARTS AGE
prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m
要使用您的服务公开的指标,您必须配置 OpenShift Dedicated 监控以从/metrics
端点抓取指标。您可以使用指定应如何监控服务的ServiceMonitor
自定义资源定义 (CRD) 或指定应如何监控 Pod 的PodMonitor
CRD 来执行此操作。前者需要一个Service
对象,而后者不需要,允许 Prometheus 直接从 Pod 公开的指标端点抓取指标。
此步骤向您展示如何为用户定义项目中的服务创建ServiceMonitor
资源。
您可以作为具有dedicated-admin
角色或monitoring-edit
角色的用户访问集群。
在此示例中,您已在ns1
项目中部署了prometheus-example-app
示例服务。
|
创建一个名为example-app-service-monitor.yaml
的新 YAML 配置文件。
将ServiceMonitor
资源添加到 YAML 文件。以下示例创建一个名为prometheus-example-monitor
的服务监控器,以抓取ns1
命名空间中prometheus-example-app
服务公开的指标
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: prometheus-example-monitor
namespace: ns1 (1)
spec:
endpoints:
- interval: 30s
port: web (2)
scheme: http
selector: (3)
matchLabels:
app: prometheus-example-app
1 | 指定服务运行的用户定义命名空间。 |
2 | 指定要由 Prometheus 抓取的端点端口。 |
3 | 配置选择器以根据其元数据标签匹配您的服务。 |
用户定义命名空间中的 |
将配置应用于集群
$ oc apply -f example-app-service-monitor.yaml
部署ServiceMonitor
资源需要一些时间。
验证ServiceMonitor
资源是否正在运行
$ oc -n <namespace> get servicemonitor
NAME AGE
prometheus-example-monitor 81m
您可以使用ServiceMonitor
和PodMonitor
自定义资源定义 (CRD) 来配置用户定义项目监控的服务端点的身份验证。
以下示例显示了ServiceMonitor
资源的不同身份验证设置。每个示例都演示了如何配置相应的Secret
对象,其中包含身份验证凭据和其他相关设置。
以下示例显示了ns1
命名空间中名为example-bearer-auth
的Secret
对象的Bearer令牌设置。
apiVersion: v1
kind: Secret
metadata:
name: example-bearer-auth
namespace: ns1
stringData:
token: <authentication_token> (1)
1 | 指定身份验证令牌。 |
以下示例显示了ServiceMonitor
CRD 的 Bearer 令牌身份验证设置。此示例使用名为example-bearer-auth
的Secret
对象。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: prometheus-example-monitor
namespace: ns1
spec:
endpoints:
- authorization:
credentials:
key: token (1)
name: example-bearer-auth (2)
port: web
selector:
matchLabels:
app: prometheus-example-app
1 | 在指定的Secret 对象中包含身份验证令牌的密钥。 |
2 | 包含身份验证凭据的Secret 对象的名称。 |
请勿使用 |
以下示例显示了ns1
命名空间中名为example-basic-auth
的Secret
对象的Basic身份验证设置。
apiVersion: v1
kind: Secret
metadata:
name: example-basic-auth
namespace: ns1
stringData:
user: <basic_username> (1)
password: <basic_password> (2)
1 | 指定用于身份验证的用户名。 |
2 | 指定用于身份验证的密码。 |
以下示例显示了ServiceMonitor
CRD 的Basic身份验证设置。此示例使用名为example-basic-auth
的Secret
对象。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: prometheus-example-monitor
namespace: ns1
spec:
endpoints:
- basicAuth:
username:
key: user (1)
name: example-basic-auth (2)
password:
key: password (3)
name: example-basic-auth (2)
port: web
selector:
matchLabels:
app: prometheus-example-app
1 | 在指定的Secret 对象中包含用户名的密钥。 |
2 | 包含Basic身份验证的Secret 对象的名称。 |
3 | 在指定的Secret 对象中包含密码的密钥。 |
以下示例显示了ns1
命名空间中名为example-oauth2
的Secret
对象的OAuth 2.0设置。
apiVersion: v1
kind: Secret
metadata:
name: example-oauth2
namespace: ns1
stringData:
id: <oauth2_id> (1)
secret: <oauth2_secret> (2)
1 | 指定OAuth 2.0 ID。 |
2 | 指定OAuth 2.0密钥。 |
以下示例显示了ServiceMonitor
CRD 的OAuth 2.0身份验证设置。此示例使用名为example-oauth2
的Secret
对象。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: prometheus-example-monitor
namespace: ns1
spec:
endpoints:
- oauth2:
clientId:
secret:
key: id (1)
name: example-oauth2 (2)
clientSecret:
key: secret (3)
name: example-oauth2 (2)
tokenUrl: https://example.com/oauth2/token (4)
port: web
selector:
matchLabels:
app: prometheus-example-app
1 | 在指定的Secret 对象中包含OAuth 2.0 ID的密钥。 |
2 | 包含OAuth 2.0凭据的Secret 对象的名称。 |
3 | 在指定的Secret 对象中包含OAuth 2.0密钥的密钥。 |
4 | 用于使用指定的clientId 和clientSecret 获取令牌的URL。 |
OpenShift Dedicated监控仪表盘允许您运行Prometheus查询语言(PromQL)查询以检查可视化显示在图表上的指标。此功能提供有关集群状态以及您正在监控的任何用户定义工作负载的信息。
作为dedicated-admin
,您可以一次查询一个或多个命名空间以获取有关用户定义项目的指标。
作为开发人员,您必须在查询指标时指定项目名称。您必须拥有查看所选项目指标所需的权限。
作为dedicated-admin
或拥有所有项目查看权限的用户,您可以访问指标UI中所有默认OpenShift Dedicated和用户定义项目的指标。
只有专用管理员才能访问OpenShift Dedicated监控提供的第三方UI。 |
指标UI包含预定义查询,例如所有项目的CPU、内存、带宽或网络数据包。您还可以运行自定义Prometheus查询语言(PromQL)查询。
您可以作为具有dedicated-admin
角色或对所有项目具有查看权限的用户访问集群。
您已安装OpenShift CLI (oc
)。
在OpenShift Dedicated Web控制台的**管理员**视角中,单击**观察**并转到**指标**选项卡。
要添加一个或多个查询,请执行以下任何操作
选项 | 描述 |
---|---|
选择现有查询。 |
从**选择查询**下拉列表中,选择现有查询。 |
创建自定义查询。 |
将您的Prometheus查询语言(PromQL)查询添加到**表达式**字段。 键入PromQL表达式时,自动完成建议会显示在下拉列表中。这些建议包括函数、指标、标签和时间标记。使用键盘箭头选择这些建议项之一,然后按Enter键将该项添加到您的表达式中。将鼠标指针悬停在建议项上以查看该项的简短描述。 |
添加多个查询。 |
点击**添加查询**。 |
复制现有查询。 |
点击查询旁边的选项菜单 |
禁用运行查询。 |
点击查询旁边的选项菜单 |
要运行您创建的查询,请单击**运行查询**。查询中的指标将可视化显示在图表上。如果查询无效,UI将显示错误消息。
|
可选:页面 URL 现在包含您运行的查询。要将来再次使用此查询集,请保存此 URL。
探索可视化指标。最初,绘图上会显示所有已启用查询中的所有指标。通过执行以下任何操作来选择显示哪些指标
选项 | 描述 |
---|---|
隐藏查询中的所有指标。 |
点击查询的选项菜单 |
隐藏特定指标。 |
转到查询表,并点击指标名称旁边的彩色方块。 |
放大绘图并更改时间范围。 |
执行以下操作之一
|
重置时间范围。 |
点击重置缩放。 |
显示特定时间点所有查询的输出。 |
将鼠标悬停在您感兴趣的点上。查询输出将显示在弹出框中。 |
隐藏绘图。 |
点击隐藏图表。 |
有关创建 PromQL 查询的更多信息,请参见Prometheus 查询文档。
您可以作为开发人员或具有项目查看权限的用户访问用户定义项目的指标。
指标 UI 包含预定义查询,例如 CPU、内存、带宽或网络数据包。这些查询仅限于选定的项目。您还可以针对该项目运行自定义 Prometheus 查询语言 (PromQL) 查询。
开发人员只能使用开发人员视角,而不能使用管理员视角。作为开发人员,您一次只能查询一个项目的指标。开发人员无法访问 OpenShift Dedicated 监控提供的第三方 UI。 |
您可以作为开发人员或具有您正在查看其指标的项目的查看权限的用户访问集群。
您已为用户定义的项目启用了监控。
您已在用户定义的项目中部署了一个服务。
您已为该服务创建了一个ServiceMonitor
自定义资源定义 (CRD) 来定义如何监控该服务。
在 OpenShift Dedicated Web 控制台的开发人员视角中,点击观察并转到指标选项卡。
在项目:列表中选择您要查看其指标的项目。
要添加一个或多个查询,请执行以下任何操作
选项 | 描述 |
---|---|
选择现有查询。 |
从**选择查询**下拉列表中,选择现有查询。 |
创建自定义查询。 |
将您的Prometheus查询语言(PromQL)查询添加到**表达式**字段。 键入PromQL表达式时,自动完成建议会显示在下拉列表中。这些建议包括函数、指标、标签和时间标记。使用键盘箭头选择这些建议项之一,然后按Enter键将该项添加到您的表达式中。将鼠标指针悬停在建议项上以查看该项的简短描述。 |
添加多个查询。 |
点击**添加查询**。 |
复制现有查询。 |
点击查询旁边的选项菜单 |
禁用运行查询。 |
点击查询旁边的选项菜单 |
要运行您创建的查询,请单击**运行查询**。查询中的指标将可视化显示在图表上。如果查询无效,UI将显示错误消息。
|
可选:页面 URL 现在包含您运行的查询。要将来再次使用此查询集,请保存此 URL。
探索可视化指标。最初,绘图上会显示所有已启用查询中的所有指标。通过执行以下任何操作来选择显示哪些指标
选项 | 描述 |
---|---|
隐藏查询中的所有指标。 |
点击查询的选项菜单 |
隐藏特定指标。 |
转到查询表,并点击指标名称旁边的彩色方块。 |
放大绘图并更改时间范围。 |
执行以下操作之一
|
重置时间范围。 |
点击重置缩放。 |
显示特定时间点所有查询的输出。 |
将鼠标悬停在您感兴趣的点上。查询输出将显示在弹出框中。 |
隐藏绘图。 |
点击隐藏图表。 |
有关创建 PromQL 查询的更多信息,请参见Prometheus 查询文档。
在 OpenShift Dedicated Web 控制台的管理员视角中,您可以使用指标目标页面来查看、搜索和筛选当前目标用于抓取的端点,这有助于您识别和解决问题。例如,您可以查看目标端点的当前状态,以查看 OpenShift Dedicated Monitoring 何时无法从目标组件抓取指标。
指标目标页面显示用户定义项目的指标。
您可以作为具有dedicated-admin
角色的用户访问集群。
在管理员视角中,选择观察→目标。指标目标页面将打开,其中列出了所有正在抓取指标的服务端点目标。
此页面显示有关默认 OpenShift Dedicated 和用户定义项目的指标目标的详细信息。此页面列出了每个目标的以下信息
正在抓取的服务端点 URL
正在监控的 ServiceMonitor 组件
目标的启动或停止状态
命名空间
上次抓取时间
上次抓取的持续时间
可选:指标目标列表可能很长。要查找特定目标,请执行以下任一操作
选项 | 描述 |
---|---|
按状态和来源筛选目标。 |
在筛选器列表中选择筛选器。 提供以下筛选选项
|
按名称或标签搜索目标。 |
在搜索框旁边的文本或标签字段中输入搜索词。 |
对目标进行排序。 |
点击端点状态、命名空间、上次抓取和抓取持续时间列标题中的一个或多个。 |
点击目标的端点列中的 URL 可导航到其目标详细信息页面。此页面提供有关目标的信息,包括以下内容:
正在抓取指标的端点 URL
目标当前的启动或停止状态
指向命名空间的链接
指向 ServiceMonitor 详细信息的链接
附加到目标的标签
上次抓取指标的时间