This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.13. 使用 Prometheus 配置内置监控
本指南描述了 Operator SDK 使用 Prometheus Operator 提供的内置监控支持,以及使用基于 Go 和 Ansible 的 Operator 作者的详细信息。
5.13.1. Prometheus Operator 支持 复制链接链接已复制到粘贴板!
Prometheus 是一个开源系统监视和警报工具包。Prometheus Operator 会创建、配置和管理在基于 Kubernetes 的集群(如 OpenShift Container Platform)中运行的 Prometheus 集群。
默认情况下,Operator SDK 中包括帮助函数,用于在任何生成的 Go-based Operator 中自动设置指标,以便在部署了 Prometheus Operator 的集群上使用。
5.13.2. 为基于 Go 的 Operator 公开自定义指标 复制链接链接已复制到粘贴板!
作为 Operator 作者,您可以使用 controller-runtime/pkg/metrics
库中的全局 Prometheus registry 发布自定义指标。
先决条件
- 使用 Operator SDK 生成基于 Go 的 Operator
- Prometheus Operator,默认部署在 OpenShift Container Platform 集群中
流程
在 Operator SDK 项目中,取消注释
config/default/kustomization.yaml
文件中的以下行:../prometheus
../prometheus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建自定义控制器类,以便从 Operator 发布其他指标。以下示例将
widgets
和widgetFailures
收集器声明为全局变量,然后将它们注册到控制器的软件包中的init()
函数:例 5.18.
controllers/memcached_controller_test_metrics.go
文件Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录这些收集器来自
main
控制器类中协调循环的任何部分,这决定了指标的业务逻辑:例 5.19.
controllers/memcached_controller.go
文件Copy to Clipboard Copied! Toggle word wrap Toggle overflow 构建和推送 Operator:
make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Operator:
make deploy IMG=<registry>/<user>/<image_name>:<tag>
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建角色和角色绑定定义,以允许 OpenShift Container Platform 集群的 Prometheus 实例提取 Operator 的服务监控。
必须分配角色,以便服务帐户具有提取命名空间指标的权限:
例 5.20.
config/prometheus/role.yaml
角色Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.21.
config/prometheus/rolebinding.yaml
角色绑定Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为部署的 Operator 应用角色和绑定:
oc apply -f config/prometheus/role.yaml
$ oc apply -f config/prometheus/role.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f config/prometheus/rolebinding.yaml
$ oc apply -f config/prometheus/rolebinding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您要提取的命名空间设置标签,为该命名空间启用 OpenShift 集群监控:
oc label namespace <operator_namespace> openshift.io/cluster-monitoring="true"
$ oc label namespace <operator_namespace> openshift.io/cluster-monitoring="true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
查询并查看 OpenShift Container Platform Web 控制台中的指标。您可以使用自定义控制器类中设置的名称,如
widgets_total
和widget_failures_total
。
5.13.3. 为基于 Ansible 的 Operator 公开自定义指标 复制链接链接已复制到粘贴板!
作为创建基于 Ansible 的 Operator 的 Operator 作者,您可以使用 Operator SDK 的 osdk_metrics
模块来公开自定义 Operator 和 Operand 指标、发出事件和支持日志记录。
先决条件
- 使用 Operator SDK 生成的基于 Ansible 的 Operator
- Prometheus Operator,默认部署在 OpenShift Container Platform 集群中
流程
生成基于 Ansible 的 Operator。这个示例使用
testmetrics.com
域:operator-sdk init \ --plugins=ansible \ --domain=testmetrics.com
$ operator-sdk init \ --plugins=ansible \ --domain=testmetrics.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
metrics
API。这个示例使用名为Testmetrics
的kind
:operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-role
$ operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
roles/testmetrics/tasks/main.yml
文件,并使用osdk_metrics
模块为 Operator 项目创建自定义指标:例 5.22.
roles/testmetrics/tasks/main.yml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在集群上运行 Operator。例如,使用 "run 作为部署" 方法:
构建 Operator 镜像并将其推送到 registry:
make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群上安装 Operator:
make install
$ make install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Operator:
make deploy IMG=<registry>/<user>/<image_name>:<tag>
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
Testmetrics
自定义资源(CR):定义 CR spec:
例 5.23.
config/samples/metrics_v1_testmetrics.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建对象:
oc create -f config/samples/metrics_v1_testmetrics.yaml
$ oc create -f config/samples/metrics_v1_testmetrics.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
获取 pod 详情:
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE ansiblemetrics-controller-manager-<id> 2/2 Running 0 149m testmetrics-sample-memcached-<id> 1/1 Running 0 147m
NAME READY STATUS RESTARTS AGE ansiblemetrics-controller-manager-<id> 2/2 Running 0 149m testmetrics-sample-memcached-<id> 1/1 Running 0 147m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取端点详情:
oc get ep
$ oc get ep
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME ENDPOINTS AGE ansiblemetrics-controller-manager-metrics-service 10.129.2.70:8443 150m
NAME ENDPOINTS AGE ansiblemetrics-controller-manager-metrics-service 10.129.2.70:8443 150m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请求自定义指标令牌:
token=`oc create token prometheus-k8s -n openshift-monitoring`
$ token=`oc create token prometheus-k8s -n openshift-monitoring`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查指标值:
检查
my_counter_metric
值:oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep my_counter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
HELP my_counter_metric Add 3.14 to the counter TYPE my_counter_metric counter my_counter_metric 2
HELP my_counter_metric Add 3.14 to the counter TYPE my_counter_metric counter my_counter_metric 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
my_gauge_metric
值:oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep gauge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
HELP my_gauge_metric Create my gauge and set it to 2.
HELP my_gauge_metric Create my gauge and set it to 2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
my_histogram_metric
和my_summary_metric
值:oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep Observe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
HELP my_histogram_metric Observe my histogram HELP my_summary_metric Observe my summary
HELP my_histogram_metric Observe my histogram HELP my_summary_metric Observe my summary
Copy to Clipboard Copied! Toggle word wrap Toggle overflow