5.10. Prometheus를 사용하여 기본 제공 모니터링 구성


이 가이드에서는 Prometheus Operator 및 Operator 작성자 세부 정보를 사용하여 Operator SDK에서 제공하는 기본 제공 모니터링 지원에 대해 설명합니다.

5.10.1. Prometheus Operator 지원

Prometheus는 오픈 소스 시스템 모니터링 및 경고 툴킷입니다. Prometheus Operator는 OpenShift Container Platform과 같은 Kubernetes 기반 클러스터에서 실행되는 Prometheus 클러스터를 생성, 구성, 관리합니다.

Helper 함수는 기본적으로 Operator SDK에 있으며 Prometheus Operator가 배포된 클러스터에서 사용하기 위해 생성한 Go 기반 Operator의 지표를 자동으로 설정합니다.

5.10.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.10.2.1. 지표 포트 수정

Operator 작성자는 지표가 표시되는 포트를 수정할 수 있습니다.

사전 요구 사항

  • Operator SDK를 사용하여 Go 기반 Operator가 생성됨
  • Kubernetes 기반 클러스터에 Prometheus Operator가 배포됨

프로세스

  • 생성된 Operator의 cmd/manager/main.go 파일에서 다음 줄에 있는 metricsPort 값을 변경합니다.

    var metricsPort int32 = 8383

5.10.3. 서비스 모니터

ServiceMonitorService 오브젝트에서 Endpoints를 검색하고 해당 Pod를 모니터링하도록 Prometheus를 구성하는 Prometheus Operator에서 제공하는 사용자 정의 리소스입니다.

Operator SDK를 사용하여 생성한 Go 기반 Operator에서는 GenerateServiceMonitor() 도우미 함수에서 Service 오브젝트를 가져와서 이를 기반으로 ServiceMonitor 오브젝트를 생성할 수 있습니다.

추가 리소스

5.10.3.1. 서비스 모니터 생성

Operator 작성자는 metrics.CreateServiceMonitor() 도우미 함수를 사용하여 생성한 모니터링 서비스에 대한 서비스 대상 검색 기능을 추가하여 새로 생성한 서비스를 허용할 수 있습니다.

사전 요구 사항

  • Operator SDK를 사용하여 Go 기반 Operator가 생성됨
  • Kubernetes 기반 클러스터에 Prometheus Operator가 배포됨

프로세스

  • Operator 코드에 metrics.CreateServiceMonitor() 도우미 함수를 추가합니다.

    import(
        "k8s.io/api/core/v1"
        "github.com/operator-framework/operator-sdk/pkg/metrics"
        "machine.openshift.io/controller-runtime/pkg/client/config"
    )
    func main() {
    
        ...
        // Populate below with the Service(s) for which you want to create ServiceMonitors.
        services := []*v1.Service{}
        // Create one ServiceMonitor per application per namespace.
        // Change the below value to name of the Namespace you want the ServiceMonitor to be created in.
        ns := "default"
        // restConfig is used for talking to the Kubernetes apiserver
        restConfig := config.GetConfig()
    
        // Pass the Service(s) to the helper function, which in turn returns the array of ServiceMonitor objects.
        serviceMonitors, err := metrics.CreateServiceMonitors(restConfig, ns, services)
        if err != nil {
            // Handle errors here.
        }
        ...
    }
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.