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