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())
    }
    ...
}
1
在其上公开指标的主机。
2
在其上公开指标的端口。

5.9.2.1. 修改指标端口

Operator 作者可修改在其上公开指标的端口。

先决条件

  • 使用 Operator SDK 生成基于 Go 的 Operator
  • 基于 Kubernetes 的集群已部署 Prometheus Operator

流程

  • 在生成的 Operator 的 cmd/manager/main.go 文件中,在以下行中更改 metricsPort 的值:

    var metricsPort int32 = 8383