12.4. 为虚拟机公开自定义指标
OpenShift Container Platform 包括一个预配置、预安装和自我更新的监控堆栈,可为核心平台组件提供监控。此监控堆栈基于 Prometheus 监控系统。Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。
除了使用 OpenShift Container Platform 监控堆栈外,您还可以使用 CLI 启用对用户定义的项目的监控,并查询通过 node-exporter
服务为虚拟机公开的自定义指标。
12.4.1. 配置节点导出器服务 复制链接链接已复制到粘贴板!
node-exporter 代理部署在您要从中收集指标的集群中的每个虚拟机上。将 node-exporter 代理配置为服务,以公开与虚拟机关联的内部指标和进程。
先决条件
-
安装 OpenShift Container Platform CLI
oc
。 -
以具有
cluster-admin
权限的用户身份登录集群。 -
在
openshift-monitoring
项目中创建cluster-monitoring-config
ConfigMap
对象。 -
通过将
enableUserWorkload
设置为true
,配置openshift-user-workload-monitoring
项目中的user-workload-monitoring-config
ConfigMap
对象。
流程
创建
Service
YAML 文件。在以下示例中,该文件名为node-exporter-service.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 node-exporter 服务:
oc create -f node-exporter-service.yaml
$ oc create -f node-exporter-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.2. 配置使用节点 exporter 服务的虚拟机 复制链接链接已复制到粘贴板!
将 node-exporter
文件下载到虚拟机。然后,创建一个在虚拟机引导时运行 node-exporter 服务的 systemd
服务。
先决条件
-
该组件的 Pod 在
openshift-user-workload-monitoring
项目中运行。 -
向需要监控此用户定义的项目的用户授予
monitoring-edit
角色。
流程
- 登录虚拟机。
使用应用到
node-exporter
文件的目录的路径,将node-exporter
文件下载到虚拟机。wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提取可执行文件并将其放置在
/usr/bin
目录中。sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \ --directory /usr/bin --strip 1 "*/node_exporter"
$ sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \ --directory /usr/bin --strip 1 "*/node_exporter"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在此目录路径中创建
node_exporter.service
文件:/etc/systemd/system
。此systemd
服务文件在虚拟机重启时运行 node-exporter 服务。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用并启动
systemd
服务。sudo systemctl enable node_exporter.service sudo systemctl start node_exporter.service
$ sudo systemctl enable node_exporter.service $ sudo systemctl start node_exporter.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 node-exporter 代理是否已报告虚拟机的指标。
curl http://localhost:9100/metrics
$ curl http://localhost:9100/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
go_gc_duration_seconds{quantile="0"} 1.5244e-05 go_gc_duration_seconds{quantile="0.25"} 3.0449e-05 go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
go_gc_duration_seconds{quantile="0"} 1.5244e-05 go_gc_duration_seconds{quantile="0.25"} 3.0449e-05 go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.3. 为虚拟机创建自定义监控标签 复制链接链接已复制到粘贴板!
要启用来自单个服务的多个虚拟机的查询,请在虚拟机的 YAML 文件中添加自定义标签。
先决条件
-
安装 OpenShift Container Platform CLI
oc
。 -
以具有
cluster-admin
特权的用户身份登录。 - 访问 web 控制台以停止和重启虚拟机。
流程
编辑虚拟机配置文件的
模板
spec。在本例中,标签monitor
具有值metrics
。spec: template: metadata: labels: monitor: metrics
spec: template: metadata: labels: monitor: metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
停止并重启虚拟机,以创建具有与
monitor
标签给定标签名称的新 pod。
12.4.3.1. 查询 node-exporter 服务以获取指标 复制链接链接已复制到粘贴板!
指标通过 /metrics
规范名称下的 HTTP 服务端点公开。当您查询指标时,Prometheus 会直接从虚拟机公开的指标端点中提取指标,并展示这些指标来查看。
先决条件
-
您可以使用具有
cluster-admin
特权或monitoring-edit
角色的用户访问集群。 - 您已通过配置 node-exporter 服务为用户定义的项目启用了监控。
流程
通过为服务指定命名空间来获取 HTTP 服务端点:
oc get service -n <namespace> <node-exporter-service>
$ oc get service -n <namespace> <node-exporter-service>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要列出 node-exporter 服务的所有可用指标,请查询
metrics
资源。curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
$ curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4. 为节点 exporter 服务创建 ServiceMonitor 资源 复制链接链接已复制到粘贴板!
您可以使用 Prometheus 客户端库和从 /metrics
端点中提取指标来访问和查看 node-exporter 服务公开的指标。使用 ServiceMonitor
自定义资源定义(CRD)来监控节点 exporter 服务。
先决条件
-
您可以使用具有
cluster-admin
特权或monitoring-edit
角色的用户访问集群。 - 您已通过配置 node-exporter 服务为用户定义的项目启用了监控。
流程
为
ServiceMonitor
资源配置创建一个 YAML 文件。在本例中,服务监控器与带有标签metrics
的任意服务匹配,每 30 秒对exmet
端口进行查询。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 node-exporter 服务创建
ServiceMonitor
配置。oc create -f node-exporter-metrics-monitor.yaml
$ oc create -f node-exporter-metrics-monitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4.1. 访问集群外的节点导出服务 复制链接链接已复制到粘贴板!
您可以访问集群外的 node-exporter 服务,并查看公开的指标。
先决条件
-
您可以使用具有
cluster-admin
特权或monitoring-edit
角色的用户访问集群。 - 您已通过配置 node-exporter 服务为用户定义的项目启用了监控。
流程
公开 node-exporter 服务。
oc expose service -n <namespace> <node_exporter_service_name>
$ oc expose service -n <namespace> <node_exporter_service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取路由的 FQDN(全限定域名)。
oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
$ oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DNS node-exporter-service node-exporter-service-dynamation.apps.cluster.example.org
NAME DNS node-exporter-service node-exporter-service-dynamation.apps.cluster.example.org
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
curl
命令显示 node-exporter 服务的指标。curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
$ curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
go_gc_duration_seconds{quantile="0"} 1.5382e-05 go_gc_duration_seconds{quantile="0.25"} 3.1163e-05 go_gc_duration_seconds{quantile="0.5"} 3.8546e-05 go_gc_duration_seconds{quantile="0.75"} 4.9139e-05 go_gc_duration_seconds{quantile="1"} 0.000189423
go_gc_duration_seconds{quantile="0"} 1.5382e-05 go_gc_duration_seconds{quantile="0.25"} 3.1163e-05 go_gc_duration_seconds{quantile="0.5"} 3.8546e-05 go_gc_duration_seconds{quantile="0.75"} 4.9139e-05 go_gc_duration_seconds{quantile="1"} 0.000189423
Copy to Clipboard Copied! Toggle word wrap Toggle overflow