9.2. 为用户定义的项目设置指标集合
您可以创建一个 ServiceMonitor
资源,从用户定义的项目中的服务端点提取指标。这假设您的应用程序使用 Prometheus 客户端库向 /metrics
规范名称公开指标。
本节介绍了如何在用户定义的项目中部署示例服务,然后创建一个 ServiceMonitor
资源来定义应该如何监控该服务。
9.2.1. 部署示例服务 复制链接链接已复制到粘贴板!
要为用户定义的项目中服务测试监控,您可以部署示例服务。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有命名空间管理权限的用户身份访问集群。
流程
-
为服务配置创建 YAML 文件。在本例中,该文件名为
prometheus-example-app.yaml
。 在该文件中添加以下部署和服务配置详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置会在用户定义的
ns1
项目中部署名为prometheus-example-app
的服务。此服务会公开自定义version
指标。将配置应用到集群:
oc apply -f prometheus-example-app.yaml
$ oc apply -f prometheus-example-app.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署该服务需要一些时间。
您可以检查该 Pod 是否正在运行:
oc -n ns1 get pod
$ oc -n ns1 get pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m
NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.2. 指定如何监控服务 复制链接链接已复制到粘贴板!
要使用服务公开的指标,需要将 OpenShift Container Platform 监控配置为从 /metrics
端点中提取指标。您可以使用一个 ServiceMonitor
自定义资源定义(CRD)应该如何监控服务,或使用一个 PodMonitor
CRD 指定应该如何监控 pod。前者需要 Service
对象,而后者则不需要,允许 Prometheus 直接从 Pod 公开的指标端点中提取指标。
此流程演示了如何为用户定义的项目中的服务创建 ServiceMonitor
资源。
先决条件
-
您可以使用具有
cluster-admin
集群角色或monitoring-edit
集群角色的用户访问集群。 - 您已为用户定义的项目启用了监控。
在本例中,您已在
ns1
项目中部署了prometheus-example-app
示例服务。注意prometheus-example-app
示例服务不支持 TLS 身份验证。
流程
-
创建名为
example-app-service-monitor.yaml
的新 YAML 配置文件。 将
ServiceMonitor
资源添加到 YAML 文件中。以下示例创建一个名为prometheus-example-monitor
的服务监控器,用于提取ns1
命名空间中的prometheus-example-app
服务公开的指标:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意用户定义的命名空间中的
ServiceMonitor
资源只能发现同一命名空间中的服务。也就是说,ServiceMonitor
资源的namespaceSelector
字段总是被忽略。将配置应用到集群:
oc apply -f example-app-service-monitor.yaml
$ oc apply -f example-app-service-monitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署
ServiceMonitor
资源需要一些时间。验证
ServiceMonitor
资源是否正在运行:oc -n <namespace> get servicemonitor
$ oc -n <namespace> get servicemonitor
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE prometheus-example-monitor 81m
NAME AGE prometheus-example-monitor 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.3. 服务端点身份验证设置示例 复制链接链接已复制到粘贴板!
您可以使用 ServiceMonitor
和 PodMonitor
自定义资源定义(CRD) 为用户定义的项目监控配置服务端点身份验证。
以下示例显示了 ServiceMonitor
资源的不同身份验证设置。每个示例演示了如何配置包含身份验证凭据和其他相关设置的对应 Secret
对象。
9.2.3.1. 使用 bearer 令牌的 YAML 身份验证示例 复制链接链接已复制到粘贴板!
以下示例显示了 ns1
命名空间中名为 example-bearer-auth
的 Secret
对象的 bearer 令牌设置:
bearer 令牌 secret 示例
- 1
- 指定身份验证令牌。
以下示例显示了 ServiceMonitor
CRD 的 bearer 令牌身份验证设置。这个示例使用名为 example-bearer-auth
的 Secret
对象:
bearer 令牌身份验证设置示例
不要使用 bearerTokenFile
来配置 bearer 令牌。如果使用 bearerTokenFile
配置,ServiceMonitor
资源将被拒绝。
9.2.3.2. 用于基本身份验证的 YAML 示例 复制链接链接已复制到粘贴板!
以下示例显示了 ns1
命名空间中名为 example-basic-auth
的 Secret
对象基本身份验证设置:
基本身份验证 secret 示例
以下示例显示了 ServiceMonitor
CRD 的基本身份验证设置。这个示例使用名为 example-basic-auth
的 Secret
对象:
基本身份验证设置示例
9.2.3.3. 使用 OAuth 2.0 的 YAML 身份验证示例 复制链接链接已复制到粘贴板!
以下示例显示了 ns1
命名空间中名为 example-oauth2
的 Secret
对象的 OAuth 2.0 设置:
OAuth 2.0 secret 示例
以下示例显示了 ServiceMonitor
CRD 的 OAuth 2.0 身份验证设置。这个示例使用名为 example-oauth2
的 Secret
对象:
OAuth 2.0 身份验证设置示例