17.4. 서비스를 모니터링하도록 Cluster Observability Operator 구성
Cluster Observability Operator는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
COO(Cluster Observability Operator)에서 관리하는 모니터링 스택을 구성하여 서비스에 대한 메트릭을 모니터링할 수 있습니다.
서비스 모니터링을 테스트하려면 다음 단계를 따르십시오.
- 서비스 엔드포인트를 정의하는 샘플 서비스를 배포합니다.
-
COO에서 서비스를 모니터링할 방법을 지정하는
ServiceMonitor
오브젝트를 생성합니다. -
MonitoringStack
오브젝트를 생성하여ServiceMonitor
오브젝트를 검색합니다.
17.4.1. Cluster Observability Operator의 샘플 서비스 배포
이 구성은 사용자 정의 ns1-coo
프로젝트에 prometheus-coo-example-app
이라는 샘플 서비스를 배포합니다. 서비스는 사용자 정의 버전
지표를 노출합니다.
사전 요구 사항
-
cluster-admin
클러스터 역할의 사용자로 또는 네임스페이스에 대한 관리 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
절차
네임스페이스, 배포 및 서비스에 대한 다음 구성 세부 정보가 포함된
prometheus-coo-example-app.yaml
이라는 YAML 파일을 생성합니다.apiVersion: v1 kind: Namespace metadata: name: ns1-coo --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: replicas: 1 selector: matchLabels: app: prometheus-coo-example-app template: metadata: labels: app: prometheus-coo-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.2 imagePullPolicy: IfNotPresent name: prometheus-coo-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-coo-example-app type: ClusterIP
- 파일을 저장합니다.
다음 명령을 실행하여 클러스터에 구성을 적용합니다.
$ oc apply -f prometheus-coo-example-app.yaml
다음 명령을 실행하고 출력을 관찰하여 포드가 실행 중인지 확인합니다.
$ oc -n -ns1-coo get pod
출력 예
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
17.4.2. Cluster Observability Operator에서 서비스를 모니터링하는 방법 지정
"Cluster Observability Operator의 샘플 서비스 배포" 섹션에서 생성한 샘플 서비스에서 노출하는 메트릭을 사용하려면 /metrics
끝점에서 메트릭을 스크랩하도록 모니터링 구성 요소를 구성해야 합니다.
서비스 모니터링 방법을 지정하는 ServiceMonitor
오브젝트 또는 Pod를 모니터링할 방법을 지정하는 PodMonitor
오브젝트를 사용하여 이 구성을 생성할 수 있습니다. ServiceMonitor
오브젝트에는 Service
오브젝트가 필요합니다. PodMonitor
오브젝트는 MonitoringStack
오브젝트가 Pod에서 노출하는 메트릭 끝점에서 직접 메트릭을 스크랩할 수 있도록 하지 않습니다.
다음 절차에서는 ns1-coo
네임스페이스에서 prometheus-coo-example-app
이라는 샘플 서비스에 대한 ServiceMonitor
오브젝트를 생성하는 방법을 보여줍니다.
사전 요구 사항
-
cluster-admin
클러스터 역할의 사용자로 또는 네임스페이스에 대한 관리 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다. - Cluster Observability Operator가 설치되어 있습니다.
prometheus-coo-example-app
샘플 서비스를ns1-coo
네임스페이스에 배포했습니다.참고prometheus-coo-example-app
샘플 서비스는 TLS 인증을 지원하지 않습니다.
절차
다음
ServiceMonitor
오브젝트 구성 세부 정보가 포함된example-coo-app-service-monitor.yaml
이라는 YAML 파일을 생성합니다.apiVersion: monitoring.rhobs/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-coo-example-monitor name: prometheus-coo-example-monitor namespace: ns1-coo spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-coo-example-app
이 구성은
MonitoringStack
오브젝트가prometheus-coo-example-app
샘플 서비스에서 노출하는 메트릭 데이터를 스크랩하기 위해 참조하는ServiceMonitor
오브젝트를 정의합니다.다음 명령을 실행하여 클러스터에 구성을 적용합니다.
$ oc apply -f example-app-service-monitor.yaml
다음 명령을 실행하고 출력을 관찰하여
ServiceMonitor
리소스가 생성되었는지 확인합니다.$ oc -n ns1-coo get servicemonitor
출력 예
NAME AGE prometheus-coo-example-monitor 81m
17.4.3. Cluster Observability Operator에 대한 MonitoringStack 오브젝트 생성
대상 prometheus-coo-example-app
서비스에서 노출하는 메트릭 데이터를 스크랩하려면 "Cluster Observability Operator에 대해 서비스 모니터링 방법 연결" 섹션에서 생성한 ServiceMonitor
오브젝트를 참조하는 MonitoringStack
오브젝트를 생성합니다. 그러면 이 MonitoringStack
오브젝트에서 서비스를 검색하고 노출된 지표 데이터를 스크랩할 수 있습니다.
사전 요구 사항
-
cluster-admin
클러스터 역할의 사용자로 또는 네임스페이스에 대한 관리 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다. - Cluster Observability Operator가 설치되어 있습니다.
-
prometheus-coo-example-app
샘플 서비스를ns1-coo
네임스페이스에 배포했습니다. -
ns1-coo
네임스페이스에prometheus-coo-example-monitor
라는ServiceMonitor
오브젝트를 생성했습니다.
절차
-
MonitoringStack
오브젝트 구성에 대한 YAML 파일을 생성합니다. 이 예제에서는example-coo-monitoring-stack.yaml
파일의 이름을 지정합니다. 다음
MonitoringStack
오브젝트 구성 세부 정보를 추가합니다.MonitoringStack
오브젝트의 예apiVersion: monitoring.rhobs/v1alpha1 kind: MonitoringStack metadata: name: example-coo-monitoring-stack namespace: ns1-coo spec: logLevel: debug retention: 1d resourceSelector: matchLabels: k8s-app: prometheus-coo-example-monitor
다음 명령을 실행하여
MonitoringStack
오브젝트를 적용합니다.$ oc apply -f example-coo-monitoring-stack.yaml
다음 명령을 실행하고 출력을 검사하여
MonitoringStack
오브젝트를 사용할 수 있는지 확인합니다.$ oc -n ns1-coo get monitoringstack
출력 예
NAME AGE example-coo-monitoring-stack 81m