5.9.2. 指标帮助函数
在使用 Operator SDK 生成的基于 Go 的 Operator 中,以下函数会公开有关运行中程序的一般指标:
func ExposeMetricsPort(ctx context.Context, port int32) (*v1.Service, error)
这些指标从 controller-runtime
库 API 继承而来。默认在 0.0.0.0:8383/metrics
上提供指标。
创建一个 Service
对象并公开指标端口,之后可通过 Prometheus 访问该端口。删除领导 Pod 的 root
所有者时,Service
对象便会被垃圾回收。
以下示例出现在使用 Operator SDK 生成的所有 Operator 的 cmd/manager/main.go
文件中:
import( "github.com/operator-framework/operator-sdk/pkg/metrics" "machine.openshift.io/controller-runtime/pkg/manager" ) var ( // Change the below variables to serve metrics on a different host or port. metricsHost = "0.0.0.0" 1 metricsPort int32 = 8383 2 ) ... func main() { ... // Pass metrics address to controller-runtime manager mgr, err := manager.New(cfg, manager.Options{ Namespace: namespace, MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort), }) ... // Create Service object to expose the metrics port. _, err = metrics.ExposeMetricsPort(ctx, metricsPort) if err != nil { // handle error log.Info(err.Error()) } ... }
5.9.2.1. 修改指标端口
Operator 作者可修改在其上公开指标的端口。
先决条件
- 使用 Operator SDK 生成基于 Go 的 Operator
- 基于 Kubernetes 的集群已部署 Prometheus Operator
流程
在生成的 Operator 的
cmd/manager/main.go
文件中,在以下行中更改metricsPort
的值:var metricsPort int32 = 8383