모니터링


OpenShift Dedicated 4

OpenShift Dedicated의 프로젝트 모니터링

초록

이 문서에서는 OpenShift Dedicated의 모니터링 프로젝트에 대한 정보를 제공합니다.

1장. 모니터링 정보

1.1. OpenShift Dedicated 모니터링 정보

OpenShift Dedicated에서는 Red Hat site Reliability Engineering(SRE) 플랫폼 메트릭과 별도로 자체 프로젝트를 모니터링할 수 있습니다. 추가 모니터링 솔루션 없이도 자체 프로젝트를 모니터링할 수 있습니다.

OpenShift Dedicated 모니터링 스택은 Prometheus 오픈 소스 프로젝트 및 광범위한 에코시스템을 기반으로 합니다.

1.2. 스택 아키텍처 모니터링

사용자 정의 프로젝트를 모니터링하기 위한 기본 모니터링 구성 요소 및 구성 요소가 포함된 모니터링 스택 아키텍처에 대해 알아볼 수 있습니다.

1.2.1. 모니터링 스택 이해

모니터링 스택에는 다음 구성 요소가 포함됩니다.

기본 플랫폼 모니터링 구성 요소

플랫폼 모니터링 구성 요소는 OpenShift Dedicated 설치 중에 기본적으로 openshift-monitoring 프로젝트에 설치됩니다. Red Hat 사이트 안정성 엔지니어(SRE)는 이러한 구성 요소를 사용하여 Kubernetes 서비스를 포함한 핵심 클러스터 구성 요소를 모니터링합니다. 여기에는 모든 네임스페이스의 모든 워크로드에서 수집된 CPU 및 메모리와 같은 중요한 메트릭이 포함됩니다.

다음 다이어그램의 설치됨 섹션에서 이러한 구성 요소를 확인할 수 있습니다.

사용자 정의 프로젝트를 모니터링하기 위한 구성 요소

사용자 정의 프로젝트 모니터링 구성 요소는 OpenShift Dedicated 설치 중에 기본적으로 openshift-user-workload-monitoring 프로젝트에 설치됩니다. 이러한 구성 요소를 사용하여 사용자 정의 프로젝트에서 서비스 및 Pod를 모니터링할 수 있습니다.

다음 다이어그램의 사용자 섹션에서 이러한 구성 요소를 볼 수 있습니다.

OpenShift Dedicated monitoring architecture

1.2.1.1. 기본 모니터링 대상

다음은 OpenShift Dedicated 클러스터의 Red Hat 사이트 안정성 엔지니어(SRE)에서 모니터링하는 대상의 예입니다.

  • CoreDNS
  • etcd
  • HAProxy
  • 이미지 레지스트리
  • Kubelets
  • Kubernetes API 서버
  • Kubernetes 컨트롤러 관리자
  • Kubernetes 스케줄러
  • OpenShift API 서버
  • OpenShift Controller Manager
  • OLM(Operator Lifecycle Manager)
참고

정확한 대상 목록은 클러스터 기능 및 설치된 구성 요소에 따라 다를 수 있습니다.

1.2.2. 사용자 정의 프로젝트를 모니터링하기 위한 구성 요소

OpenShift Dedicated에는 사용자 정의 프로젝트에서 서비스 및 Pod를 모니터링하는 데 도움이 되는 모니터링 스택에 선택적 개선 사항이 포함되어 있습니다. 이 기능에는 다음과 같은 구성 요소가 포함됩니다.

Expand
표 1.1. 사용자 정의 프로젝트를 모니터링하기 위한 구성 요소
구성 요소설명

Prometheus Operator

openshift-user-workload-monitoring 프로젝트의 Prometheus Operator는 동일한 프로젝트에서 Prometheus 및 Thanos Ruler 인스턴스를 생성, 구성 및 관리합니다.

Prometheus

Prometheus는 사용자 정의 프로젝트에 대한 모니터링을 제공하는 모니터링 시스템입니다. Prometheus는 처리를 위해 Alertmanager에 경고를 보냅니다.

Thanos Ruler

Thanos Ruler는 별도의 프로세스로 배포되는 Prometheus의 규칙 평가 엔진입니다. OpenShift Dedicated 에서 Thanos Ruler는 사용자 정의 프로젝트의 모니터링에 대한 규칙 및 경고 평가를 제공합니다.

Alertmanager

Alertmanager 서비스는 Prometheus 및 Thanos Ruler에서 수신한 경고를 처리합니다. 또한 Alertmanager는 사용자 정의 경고를 외부 알림 시스템으로 전송합니다. 이 서비스 배포는 선택 사항입니다.

모니터링 스택은 사용자 정의 프로젝트의 모든 구성 요소를 모니터링합니다. OpenShift Dedicated가 업데이트되면 구성 요소가 자동으로 업데이트됩니다.

1.2.2.1. 사용자 정의 프로젝트의 대상 모니터링

OpenShift Dedicated 사용자 정의 프로젝트에 대한 모니터링은 기본적으로 활성화되어 있습니다. 다음을 모니터링할 수 있습니다.

  • 사용자 정의 프로젝트에서 서비스 끝점을 통해 제공되는 메트릭입니다.
  • 사용자 정의 프로젝트에서 실행 중인 Pod.

1.2.3. 고가용성 클러스터의 모니터링 스택

기본적으로 다중 노드 클러스터에서 다음 구성 요소는 HA(고가용성) 모드로 실행하여 데이터 손실 및 서비스 중단을 방지합니다.

  • Prometheus
  • Alertmanager
  • Thanos Ruler

구성 요소는 두 개의 pod에 복제되며 각각 별도의 노드에서 실행됩니다. 즉, 모니터링 스택에서 하나의 Pod가 손실될 수 있습니다.

HA 모드의 Prometheus
  • 두 복제본 모두 독립적으로 동일한 대상을 스크랩하고 동일한 규칙을 평가합니다.
  • 복제본은 서로 통신하지 않습니다. 따라서 Pod마다 데이터가 다를 수 있습니다.
HA 모드의 Alertmanager
  • 두 복제본은 알림 및 음소거 상태를 동기화합니다. 이렇게 하면 각 알림이 한 번 이상 전송됩니다.
  • 복제본이 통신에 실패하거나 수신 측에 문제가 있는 경우 알림은 계속 전송되지만 복제될 수 있습니다.
중요

Prometheus, Alertmanager 및 Thanos Ruler는 상태 저장 구성 요소입니다. 고가용성을 보장하기 위해 영구 스토리지를 사용하여 구성해야 합니다.

1.2.4. 모니터링 스택에서 TLS 보안 및 순환

통신 보안을 유지하기 위해 OpenShift Dedicated 모니터링 스택에서 TLS 프로필 및 인증서 교체가 작동하는 방법을 알아봅니다.

모니터링 구성 요소에 대한 TLS 보안 프로필
모니터링 스택의 모든 구성 요소는 클러스터 관리자가 중앙에서 구성하는 TLS 보안 프로필 설정을 사용합니다. 모니터링 스택 구성 요소는 글로벌 OpenShift Dedicated apiservers.config.openshift.io/cluster 리소스의 tlsSecurityProfile 필드에 이미 존재하는 TLS 보안 프로필 설정을 사용합니다.
TLS 인증서 교체 및 자동 재시작

Cluster Monitoring Operator는 모니터링 구성 요소의 내부 TLS 인증서 라이프사이클을 관리합니다. 이러한 인증서는 모니터링 구성 요소 간의 내부 통신을 보호합니다.

인증서를 순환하는 동안 CMO는 보안 및 구성 맵을 업데이트하여 영향을 받는 Pod를 자동으로 재시작합니다. 이는 예상되는 동작이며 Pod가 자동으로 복구됩니다.

다음 예제에서는 인증서 교체 중에 발생하는 이벤트를 보여줍니다.

$ oc get events -n openshift-monitoring

LAST SEEN   TYPE      REASON              OBJECT                                   MESSAGE
2h39m       Normal    SecretUpdated       deployment/cluster-monitoring-operator   Updated Secret/grpc-tls -n openshift-monitoring because it changed
2h39m       Normal    SecretCreated       deployment/cluster-monitoring-operator   Created Secret/prometheus-user-workload-grpc-tls -n openshift-user-workload-monitoring because it was missing
2h39m       Normal    SecretCreated       deployment/cluster-monitoring-operator   Created Secret/thanos-querier-grpc-tls -n openshift-monitoring because it was missing
2h39m       Normal    SecretCreated       deployment/cluster-monitoring-operator   Created Secret/thanos-ruler-grpc-tls -n openshift-user-workload-monitoring because it was missing
2h39m       Normal    SecretCreated       deployment/cluster-monitoring-operator   Created Secret/prometheus-k8s-grpc-tls -n openshift-monitoring because it was missing
2h38m       Warning   FailedMount         pod/prometheus-k8s-0                     MountVolume.SetUp failed for volume "secret-grpc-tls" : secret "prometheus-k8s-grpc-tls" not found
2h39m       Normal    Created             pod/prometheus-k8s-0                     Created container kube-rbac-proxy-thanos
2h39m       Normal    Started             pod/prometheus-k8s-0                     Started container kube-rbac-proxy-thanos
2h39m       Normal    SuccessfulDelete    statefulset/prometheus-k8s               delete Pod prometheus-k8s-0 in StatefulSet prometheus-k8s successful
2h39m       Normal    SuccessfulCreate    statefulset/prometheus-k8s               create Pod prometheus-k8s-0 in StatefulSet prometheus-k8s successful

1.2.5. OpenShift Dedicated 모니터링을 위한 일반 용어집

이 용어집은 OpenShift Dedicated 아키텍처에서 사용되는 일반적인 용어를 정의합니다.

Alertmanager
Alertmanager는 Prometheus에서 수신한 경고를 처리합니다. 또한 Alertmanager는 경고를 외부 알림 시스템으로 전송해야 합니다.
경고 규칙
경고 규칙에는 클러스터 내에서 특정 상태를 설명하는 일련의 조건이 포함되어 있습니다. 이러한 조건이 true이면 경고가 트리거됩니다. 경고 규칙은 경고의 라우팅 방법을 정의하는 심각도를 할당할 수 있습니다.
Cluster Monitoring Operator
CMO(Cluster Monitoring Operator)는 모니터링 스택의 핵심 구성 요소입니다. Thanos Querier, Telemeter Client 및 메트릭 대상과 같은 Prometheus 인스턴스를 배포 및 관리하여 이러한 인스턴스를 최신 상태로 유지합니다. CMO는 CVO(Cluster Version Operator)에 의해 배포됩니다.
Cluster Version Operator
CVO(Cluster Version Operator)는 기본적으로 OpenShift Dedicated에 설치된 클러스터 Operator의 라이프사이클을 관리합니다.
구성 맵
구성 맵에서는 구성 데이터를 Pod에 삽입하는 방법을 제공합니다. 구성 맵에 저장된 데이터를 ConfigMap 유형의 볼륨에서 참조할 수 있습니다. Pod에서 실행되는 애플리케이션에서는 이 데이터를 사용할 수 있습니다.
컨테이너
컨테이너는 소프트웨어 및 모든 종속 항목을 포함하는 가볍고 실행 가능한 이미지입니다. 컨테이너는 운영 체제를 가상화합니다. 결과적으로 데이터 센터에서 퍼블릭 또는 프라이빗 클라우드에 이르기까지 어디에서나 컨테이너를 실행할 수 있으며 개발자 노트북도 실행할 수 있습니다.
CR(사용자 정의 리소스)
CR은 Kubernetes API의 확장입니다. 사용자 정의 리소스를 생성할 수 있습니다.
etcd
etcd는 모든 리소스 오브젝트의 상태를 저장하는 OpenShift Dedicated의 키-값 저장소입니다.
Kubelets
노드에서 실행되며 컨테이너 매니페스트를 읽습니다. 정의된 컨테이너가 시작되어 실행 중인지 확인합니다.
Kubernetes API 서버
Kubernetes API 서버는 API 오브젝트의 데이터를 검증하고 구성합니다.
Kubernetes 컨트롤러 관리자
Kubernetes 컨트롤러 관리자는 클러스터 상태를 관리합니다.
Kubernetes 스케줄러
Kubernetes 스케줄러는 노드에 Pod를 할당합니다.
labels
레이블은 Pod와 같은 오브젝트의 하위 집합을 구성하고 선택하는 데 사용할 수 있는 키-값 쌍입니다.
지표 서버
Metrics 서버 모니터링 구성 요소는 리소스 지표를 수집하여 다른 툴 및 API에서 사용할 metrics.k8s.io Metrics API 서비스에 노출하므로 코어 플랫폼 Prometheus 스택이 이 기능을 처리할 수 없습니다.
노드
OpenShift Dedicated 클러스터의 컴퓨팅 머신. 노드는 VM(가상 머신) 또는 물리적 머신입니다.
Operator
OpenShift Dedicated 클러스터에서 Kubernetes 애플리케이션을 패키징, 배포 및 관리하는 기본 방법입니다. Operator는 사람의 운영 지식을 패키지하고 고객과 공유하는 소프트웨어로 인코딩합니다.
OLM(Operator Lifecycle Manager)
OLM은 Kubernetes 네이티브 애플리케이션의 라이프사이클을 설치, 업데이트 및 관리할 수 있도록 지원합니다. OLM은 효과적이고 자동화되고 확장 가능한 방식으로 Operator를 관리하도록 설계된 오픈 소스 툴킷입니다.
영구 스토리지
장치가 종료된 후에도 데이터를 저장합니다. Kubernetes는 영구 볼륨을 사용하여 애플리케이션 데이터를 저장합니다.
PVC(영구 볼륨 클레임)
PVC를 사용하여 PersistentVolume을 포드에 마운트할 수 있습니다. 클라우드 환경의 세부 사항을 모르는 상태에서 스토리지에 액세스할 수 있습니다.
Pod
Pod는 Kubernetes에서 가장 작은 논리 단위입니다. Pod는 작업자 노드에서 실행할 하나 이상의 컨테이너로 구성됩니다.
Prometheus
Prometheus는 OpenShift Dedicated 모니터링 스택을 기반으로 하는 모니터링 시스템입니다. Prometheus는 시계열 데이터베이스이며 메트릭에 대한 규칙 평가 엔진입니다. Prometheus는 처리를 위해 Alertmanager에 경고를 보냅니다.
Prometheus Operator
openshift-monitoring 프로젝트의 Prometheus Operator는 플랫폼 Prometheus 및 Alertmanager 인스턴스를 생성, 구성 및 관리합니다. 또한 Kubernetes 라벨 쿼리를 기반으로 모니터링 대상 구성을 자동으로 생성합니다.
음소거
경고 조건이 true일 때 알림이 전송되는 것을 방지하기 위해 경고에 음소거를 적용할 수 있습니다. 기본 문제를 해결하는 동안 초기 알림 후 경고를 음소거할 수 있습니다.
storage
OpenShift Dedicated는 AWS 및 Google Cloud에서 다양한 유형의 스토리지를 지원합니다. OpenShift Dedicated 클러스터에서 영구 및 비영구 데이터에 대한 컨테이너 스토리지를 관리할 수 있습니다.
Thanos Ruler
Thanos Ruler는 별도의 프로세스로 배포되는 Prometheus의 규칙 평가 엔진입니다. OpenShift Dedicated에서 Thanos Ruler는 사용자 정의 프로젝트의 모니터링에 대한 규칙 및 경고 평가를 제공합니다.
vector
vector는 각 OpenShift Dedicated 노드에 배포하는 로그 수집기입니다. 각 노드에서 로그 데이터를 수집하고 데이터를 변환한 다음 구성된 출력으로 전달합니다.
웹 콘솔
OpenShift Dedicated를 관리할 UI(사용자 인터페이스)입니다.

1.3. 모니터링 스택 이해 - 주요 개념

OpenShift Dedicated 모니터링 개념 및 용어를 숙지하십시오. 클러스터의 성능 및 스케일링을 개선하고, 데이터를 저장 및 기록하고, 메트릭 및 경고를 관리하는 방법에 대해 알아보십시오.

1.3.1. 성능 및 확장성 정보

클러스터의 성능과 스케일링을 최적화할 수 있습니다. 다음 작업을 수행하여 모니터링 스택을 구성할 수 있습니다.

  • 모니터링 구성 요소의 배치 및 배포를 제어합니다.

    • 노드 선택기를 사용하여 구성 요소를 특정 노드로 이동합니다.
    • 테인트된 노드로 이동하는 구성 요소를 활성화하려면 허용 오차를 할당합니다.
  • Pod 토폴로지 분배 제약 조건을 사용합니다.
  • CPU 및 메모리 리소스를 관리합니다.
1.3.1.1. 노드 선택기를 사용하여 모니터링 구성 요소 이동

라벨이 지정된 노드와 함께 nodeSelector 제약 조건을 사용하면 모니터링 스택 구성 요소 중 하나를 특정 노드로 이동할 수 있습니다. 이렇게 하면 클러스터 전체에서 모니터링 구성 요소의 배치 및 배포를 제어할 수 있습니다.

모니터링 구성 요소의 배치 및 배포를 제어하면 시스템 리소스 사용을 최적화하고 성능을 개선하고 특정 요구 사항 또는 정책을 기반으로 워크로드를 분리할 수 있습니다.

노드 선택기가 다른 제약 조건에서 작동하는 방법

노드 선택기 제약 조건을 사용하여 모니터링 구성 요소를 이동하는 경우 클러스터에 대한 Pod 예약을 제어하는 다른 제약 조건이 존재할 수 있습니다.

  • Pod 배치를 제어하기 위해 토폴로지 분배 제약 조건이 적용될 수 있습니다.
  • 이러한 구성 요소의 여러 Pod가 항상 다른 노드에 분산되도록 Prometheus, Alertmanager 및 기타 모니터링 구성 요소에 대해 하드 유사성 방지 규칙이 적용되므로 항상 고가용성을 유지합니다.

노드에 Pod를 예약할 때 Pod 스케줄러는 Pod 배치를 결정할 때 기존 제약 조건을 모두 충족합니다. 즉, Pod 스케줄러가 어떤 노드에 배치될 Pod를 결정할 때 모든 제약 조건이 혼합됩니다.

따라서 노드 선택기 제약 조건을 구성하지만 기존 제약 조건을 모두 충족할 수 없는 경우 Pod 스케줄러는 모든 제약 조건과 일치시킬 수 없으며 노드에 배치할 Pod를 예약하지 않습니다.

모니터링 구성 요소에 대한 탄력성과 고가용성을 유지하려면 충분한 노드를 사용할 수 있는지 확인하고 구성 요소를 이동하기 위해 노드 선택기 제약 조건을 구성할 때 모든 제약 조건과 일치하는지 확인합니다.

1.3.1.2. 모니터링을 위한 Pod 토폴로지 분배 제약 조건 정보

OpenShift Dedicated Pod가 여러 가용성 영역에 배포될 때 Pod 토폴로지 분배 제약 조건을 사용하여 네트워크 토폴로지에 모니터링 Pod가 분배되는 방법을 제어할 수 있습니다.

Pod 토폴로지 분배 제약 조건은 노드가 해당 영역 내의 지역 및 영역과 같은 다양한 인프라 수준에 분산되는 계층적 토폴로지 내에서 Pod 예약을 제어하는 데 적합합니다. 또한 다른 영역에서 Pod를 예약할 수 있으므로 특정 시나리오에서 네트워크 대기 시간을 개선할 수 있습니다.

Cluster Monitoring Operator에서 배포한 모든 Pod에 대해 Pod 토폴로지 분배 제약 조건을 구성하여 영역 전체에서 노드에 Pod 복제본을 예약하는 방법을 제어할 수 있습니다. 이렇게 하면 워크로드가 다른 데이터 센터 또는 계층적 인프라 영역의 노드에 분산되므로 Pod를 고가용성 및 더 효율적으로 실행할 수 있습니다.

1.3.1.3. 모니터링 구성 요소에 대한 제한 및 요청 지정 정보

사용자 정의 프로젝트를 모니터링하는 다음 구성 요소에 대한 리소스 제한 및 요청을 구성할 수 있습니다.

  • Alertmanager
  • Prometheus
  • Thanos Ruler

리소스 제한을 정의하면 컨테이너의 리소스 사용량을 제한하여 컨테이너가 CPU 및 메모리 리소스에 대해 지정된 최대값을 초과하지 않도록 합니다.

리소스 요청을 정의하면 요청된 리소스와 일치하도록 사용 가능한 CPU 및 메모리 리소스가 충분한 노드에만 컨테이너를 예약할 수 있도록 지정합니다.

1.3.2. 데이터 저장 및 기록 정보

데이터를 저장하고 기록하여 데이터를 보호하고 문제 해결에 사용할 수 있습니다. 다음 작업을 수행하여 모니터링 스택을 구성할 수 있습니다.

  • 영구 스토리지를 구성합니다.

    • PV(영구 볼륨)에 저장하여 데이터 손실로부터 메트릭 및 경고 데이터를 보호합니다. 결과적으로 Pod를 다시 시작하거나 다시 생성할 수 있습니다.
    • Alertmanager Pod가 다시 시작되면 중복 알림이 발생하지 않고 경고에 대한 음소거가 손실되지 않습니다.
  • Prometheus 및 Thanos Ruler 메트릭 데이터의 보존 시간 및 크기를 수정합니다.
  • 클러스터 문제를 해결하는 데 도움이 되도록 로깅을 구성합니다.

    • 모니터링을 위한 로그 수준을 설정합니다.
    • Prometheus 및 Thanos Querier의 쿼리 로깅을 활성화합니다.
1.3.2.1. Prometheus 메트릭의 보존 시간 및 크기

기본적으로 Prometheus는 다음 기간 동안 지표 데이터를 유지합니다.

  • 코어 플랫폼 모니터링: 15 일
  • 사용자 정의 프로젝트 모니터링: 24 시간

Prometheus 인스턴스의 보존 시간을 수정하여 데이터 삭제 기간을 변경할 수 있습니다. 보존 메트릭 데이터에서 사용하는 최대 디스크 공간을 설정할 수도 있습니다. 데이터가 이 크기 제한에 도달하면 Prometheus는 사용된 디스크 공간이 제한 미만이 될 때까지 가장 오래된 데이터를 먼저 삭제합니다.

이러한 데이터 보존 설정의 다음 동작에 유의하십시오.

  • 크기 기반 보존 정책은 영구 블록, WAL(Write-ahead) 데이터, m-mapped 청크를 포함하여 /prometheus 디렉터리의 모든 데이터 블록 디렉터리에 적용됩니다.
  • /wal/head_chunks 디렉터리의 데이터는 보존 크기 제한에 따라 계산되지만 Prometheus는 크기 또는 시간 기반 보존 정책에 따라 이러한 디렉터리에서 데이터를 제거하지 않습니다. 따라서 /wal/head_chunks 디렉토리에 대한 최대 크기 세트보다 낮은 보존 크기 제한을 설정하면 /prometheus 데이터 디렉터리의 데이터 블록을 유지하지 않도록 시스템을 구성했습니다.
  • 크기 기반 보존 정책은 Prometheus가 최소 3시간 이상의 데이터가 포함된 후 2시간마다 발생하는 새 데이터 블록을 컷핑할 때만 적용됩니다.
  • retention 또는 retentionSize 에 대한 값을 명시적으로 정의하지 않으면 보존 시간은 코어 플랫폼 모니터링의 경우 15일, 사용자 정의 프로젝트 모니터링의 경우 24시간으로 설정됩니다. 보존 크기는 설정되지 않았습니다.
  • retentionretentionSize 에 대한 값을 정의하는 경우 두 값이 모두 적용됩니다. 데이터 블록이 정의된 보존 시간 또는 정의된 크기 제한을 초과하면 Prometheus가 이러한 데이터 블록을 제거합니다.
  • retentionSize 값을 정의하고 retention을 정의하지 않으면 retentionSize 값만 적용됩니다.
  • retentionSize 에 대한 값을 정의하지 않고 retention 에 대한 값만 정의하지 않으면 보존 값만 적용됩니다.
  • retentionSize 또는 retention 값을 0 으로 설정하면 기본 설정이 적용됩니다. 기본 설정은 코어 플랫폼 모니터링의 경우 보존 시간을 15일로 설정하고 사용자 정의 프로젝트 모니터링의 경우 24시간으로 설정합니다. 기본적으로 보존 크기는 설정되지 않습니다.
참고

데이터 압축은 2시간마다 수행됩니다. 따라서 PV(영구 볼륨)가 압축하기 전에 채워지고 보존Size 제한을 초과할 수 있습니다. 이러한 경우 KubePersistentVolumeFillingUp 경고가 PV의 공간이 retentionSize 제한보다 작을 때까지 실행됩니다.

1.3.3. 메트릭 이해

OpenShift Dedicated에서 클러스터 구성 요소는 서비스 끝점을 통해 노출되는 스크랩 메트릭을 통해 모니터링됩니다. 사용자 정의 프로젝트에 대한 메트릭 컬렉션을 구성할 수도 있습니다. 메트릭을 사용하면 클러스터 구성 요소 및 자체 워크로드가 수행하는 방법을 모니터링할 수 있습니다.

애플리케이션 수준에서 Prometheus 클라이언트 라이브러리를 사용하여 자체 워크로드에 대해 제공할 메트릭을 정의할 수 있습니다.

OpenShift Dedicated에서 /metrics 표준 이름 아래에 HTTP 서비스 끝점을 통해 메트릭이 노출됩니다. http://<endpoint>/metrics에 대해 curl 쿼리를 실행하여 서비스에 사용 가능한 모든 메트릭을 나열할 수 있습니다. 예를 들어 prometheus-example-app 예제 애플리케이션에 대한 경로를 노출하고 다음을 실행하여 사용 가능한 모든 메트릭을 확인할 수 있습니다.

$ curl http://<example_app_endpoint>/metrics

출력 예

# HELP http_requests_total Count of all HTTP requests
# TYPE http_requests_total counter
http_requests_total{code="200",method="get"} 4
http_requests_total{code="404",method="get"} 2
# HELP version Version information about this binary
# TYPE version gauge
version{version="v0.1.0"} 1

개발자는 라벨을 생성하여 키-값 쌍의 형식으로 메트릭의 속성을 정의할 수 있습니다. 잠재적인 키-값 쌍의 수는 속성에 사용 가능한 값의 수에 해당합니다. 무제한의 잠재적인 값이 있는 속성을 바인딩되지 않은 속성이라고 합니다. 예를 들어, customer_id 속성은 무제한 가능한 값이 있기 때문에 바인딩되지 않은 속성입니다.

할당된 모든 키-값 쌍에는 고유한 시계열이 있습니다. 라벨에 있는 바인딩되지 않은 많은 속성을 사용하면 생성되는 시계열 수가 기하급수적으로 증가할 수 있습니다. 이는 Prometheus 성능에 영향을 미칠 수 있으며 많은 디스크 공간을 소비할 수 있습니다.

dedicated-admin 은 다음 측정값을 사용하여 사용자 정의 프로젝트에서 바인딩되지 않은 메트릭 속성의 영향을 제어할 수 있습니다.

  • 사용자 정의 프로젝트에서 대상 스크랩별로 허용할 수 있는 샘플 수 제한
  • 스크랩된 라벨 수, 라벨 이름 길이 및 라벨 값 길이 제한
  • 연속 스크랩과 Prometheus 규칙 평가 사이의 간격 구성
  • 스크랩 샘플 임계값에 도달하거나 대상을 스크랩할 수 없는 경고 생성
참고

스크랩 샘플 제한으로 인해 라벨에 많은 바인딩되지 않는 속성을 추가하여 문제가 발생하지 않도록 할 수 있습니다. 개발자는 메트릭에 대해 정의된 바인딩되지 않은 속성 수를 제한하여 기본 원인을 방지할 수도 있습니다. 사용 가능한 값의 제한된 집합에 바인딩되는 속성을 사용하면 가능한 키 - 값 쌍 조합의 수가 줄어듭니다.

1.3.3.2. 메트릭에 클러스터 ID 라벨 추가

여러 OpenShift Dedicated 클러스터를 관리하고 원격 쓰기 기능을 사용하여 이러한 클러스터의 메트릭 데이터를 외부 스토리지 위치로 보내는 경우 클러스터 ID 레이블을 추가하여 다른 클러스터에서 들어오는 메트릭 데이터를 식별할 수 있습니다. 그런 다음 이러한 라벨을 쿼리하여 메트릭의 소스 클러스터를 식별하고 해당 데이터를 다른 클러스터에서 보낸 유사한 지표 데이터와 구별할 수 있습니다.

이렇게 하면 여러 고객의 여러 클러스터를 관리하고 지표 데이터를 단일 중앙 집중식 스토리지 시스템으로 보내는 경우 클러스터 ID 레이블을 사용하여 특정 클러스터 또는 고객의 메트릭을 쿼리할 수 있습니다.

클러스터 ID 레이블을 생성하고 사용하려면 세 가지 일반적인 단계가 필요합니다.

  • 원격 쓰기 스토리지에 대한 쓰기 재레이블 설정 구성.
  • 메트릭에 클러스터 ID 레이블을 추가합니다.
  • 이러한 라벨을 쿼리하여 지표의 소스 클러스터 또는 고객을 식별합니다.

1.3.4. 모니터링 대시보드 정보

OpenShift Dedicated는 클러스터 구성 요소 및 사용자 정의 워크로드의 상태를 이해하는 데 도움이 되는 모니터링 대시보드 세트를 제공합니다.

중요

OpenShift Dedicated 4.19부터 웹 콘솔의 관점에 통합됩니다. Developer 모드는 기본적으로 더 이상 활성화되지 않습니다.

모든 사용자는 모든 OpenShift Dedicated 웹 콘솔 기능과 상호 작용할 수 있습니다. 그러나 클러스터 소유자가 아닌 경우 클러스터 소유자의 특정 기능에 액세스할 수 있는 권한을 요청해야 할 수 있습니다.

여전히 개발자 화면을 활성화할 수 있습니다. 웹 콘솔의 시작 창에서 콘솔 둘러보기, 클러스터 설정, 개발자 화면 활성화에 대한 빠른 시작 정보를 찾고, 링크를 따라 새 기능 및 기능을 탐색할 수 있습니다.

관리자는 다음 항목을 포함하여 핵심 OpenShift Dedicated 구성 요소의 대시보드에 액세스할 수 있습니다.

  • API 성능
  • etcd
  • Kubernetes 컴퓨팅 리소스
  • Kubernetes 네트워크 리소스
  • Prometheus
  • 클러스터 및 노드 성능과 관련된 USE 메서드 대시보드
  • 노드 성능 지표

1.3.5. 경고 관리

OpenShift Dedicated에서 경고 UI를 사용하면 경고, 음소거, 경고 규칙을 관리할 수 있습니다.

  • 경고 규칙. 경고 규칙에는 클러스터 내에서 특정 상태를 설명하는 일련의 조건이 포함되어 있습니다. 이러한 조건이 true이면 경고가 트리거됩니다. 경고 규칙은 경고의 라우팅 방법을 정의하는 심각도를 할당할 수 있습니다.
  • 경고. 경고 규칙에 정의된 조건이 true이면 경고가 실행됩니다. 경고는 OpenShift Dedicated 클러스터 내에서 일련의 상황이 나타날 수 있음을 알리는 알림을 제공합니다.
  • 음소거. 경고 조건이 true일 때 알림이 전송되는 것을 방지하기 위해 경고에 음소거를 적용할 수 있습니다. 문제를 해결하는 동안 초기 알림 후 경고를 음소거할 수 있습니다.
참고

경고 UI에서 사용할 수 있는 경고, 음소거, 경고 규칙은 액세스할 수 있는 프로젝트와 관련이 있습니다. 예를 들어 cluster-admin 역할의 사용자로 로그인한 경우 모든 경고, 음소거 및 경고 규칙에 액세스할 수 있습니다.

1.3.5.1. 음소거 관리

OpenShift Dedicated 웹 콘솔에서 경고에 대한 음소거를 생성할 수 있습니다. 음소거를 생성한 후에는 경고가 실행될 때 경고에 대한 알림을 받지 않습니다.

음소거는 초기 경고 알림을 수신한 시나리오에서 유용하며 기본 문제를 해결하는 동안 경고를 발생시키는 동안 추가 알림을 수신하지 않으려는 경우에 유용합니다.

음소거를 생성할 때 즉시 또는 나중에 활성 상태가 되는지 여부를 지정해야 합니다. 또한 음소거가 만료된 후 기간을 설정해야 합니다.

음소거를 생성한 후 이를 보고 편집하고 만료할 수 있습니다.

참고

음소거를 생성하면 Alertmanager Pod에 복제됩니다. 그러나 Alertmanager에 대한 영구 스토리지를 구성하지 않으면 음소거가 손실될 수 있습니다. 예를 들어 모든 Alertmanager Pod가 동시에 다시 시작되면 이러한 상황이 발생할 수 있습니다.

1.3.5.2. 사용자 정의 프로젝트에 대한 경고 규칙 생성

OpenShift Dedicated에서는 사용자 정의 프로젝트에 대한 경고 규칙을 생성할 수 있습니다. 이러한 경고 규칙은 선택한 메트릭의 값에 따라 경고를 트리거합니다.

사용자 정의 프로젝트에 대한 경고 규칙을 생성하는 경우 새 규칙을 정의할 때 다음 주요 동작 및 중요한 제한 사항을 고려하십시오.

  • 사용자 정의 경고 규칙은 코어 플랫폼 모니터링의 기본 메트릭 외에도 자체 프로젝트에서 노출하는 메트릭을 포함할 수 있습니다. 다른 사용자 정의 프로젝트의 메트릭을 포함할 수 없습니다.

    예를 들어 ns1 사용자 정의 프로젝트에 대한 경고 규칙은 CPU 및 메모리 지표와 같은 코어 플랫폼 메트릭 외에도 ns1 프로젝트에서 노출하는 메트릭을 사용할 수 있습니다. 그러나 규칙에는 다른 ns2 사용자 정의 프로젝트의 메트릭을 포함할 수 없습니다.

  • 기본적으로 경고 규칙을 생성할 때 동일한 이름의 규칙이 다른 프로젝트에 존재하는 경우에도 네임스페이스 레이블이 적용됩니다. 원본 프로젝트에 바인딩되지 않은 경고 규칙을 생성하려면 "사용자 정의 프로젝트에 대한 프로젝트 간 경고 규칙 생성"을 참조하십시오.
  • 대기 시간을 줄이고 핵심 플랫폼 모니터링 구성 요소의 부하를 최소화하기 위해 openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus 레이블을 규칙에 추가할 수 있습니다. 이 레이블은 openshift-user-workload-monitoring 프로젝트에 배포된 Prometheus 인스턴스만 경고 규칙을 평가하고 Thanos Ruler 인스턴스가 이를 수행하지 못하도록 합니다.

    중요

    경고 규칙에 이 레이블이 있는 경우 경고 규칙은 사용자 정의 프로젝트에서 노출하는 메트릭만 사용할 수 있습니다. 기본 플랫폼 메트릭을 기반으로 생성하는 경고 규칙은 경고가 트리거되지 않을 수 있습니다.

1.3.5.3. 사용자 정의 프로젝트에 대한 경고 규칙 관리

OpenShift Dedicated에서는 사용자 정의 프로젝트에서 경고 규칙을 보고 편집하고 제거할 수 있습니다.

중요

사용자 정의 프로젝트에 대한 경고 규칙 관리는 OpenShift Dedicated 버전 4.11 이상에서만 사용할 수 있습니다.

경고 규칙 고려 사항

  • 기본 경고 규칙은 특히 OpenShift Dedicated 클러스터에 사용됩니다.
  • 일부 경고 규칙은 의도적으로 이름이 동일합니다. 임계값, 다른 심각도 또는 둘 다의 경우와 동일한 이벤트에 대한 경고를 보냅니다.
  • 억제 규칙은 심각도가 높은 경고가 실행될 때 실행되는 심각도가 낮은 경고에 대한 알림을 방지합니다.
1.3.5.4. 사용자 정의 프로젝트에 대한 경고 최적화

경고 규칙을 생성할 때 다음 권장 사항을 따라 자체 프로젝트에 대한 경고를 최적화할 수 있습니다.

  • 프로젝트에 생성하는 경고 규칙 수를 최소화합니다. 사용자에게 영향을 미치는 조건에 대해 알리는 경고 규칙을 생성합니다. 영향을 주지 않는 조건에 대한 여러 경고를 생성하면 관련 경고를 알리기가 더 어렵습니다.
  • 원인 대신 증상에 대한 경고 규칙을 만듭니다. 기본 원인과 관계없이 조건을 알리는 경고 규칙을 만듭니다. 그러면 원인을 조사할 수 있습니다. 각 항목이 특정 원인에만 관련된 경우 더 많은 경고 규칙이 필요합니다. 그러면 일부 원인으로 인해 누락될 가능성이 큽니다.
  • 경고 규칙을 작성하기 전에 계획합니다. 어떤 증상이 사용자에게 중요한지, 발생 시 어떤 조치를 수행할지를 결정합니다. 그런 다음 각 증상에 대한 경고 규칙을 구축합니다.
  • 명확한 경고 메시지를 제공합니다. 경고 메시지에서 증상과 권장 작업을 설명합니다.
  • 경고 규칙에 심각도 수준을 포함합니다. 경고의 심각도는 보고된 증상이 발생하는 경우 어떻게 대응해야 하는지에 따라 다릅니다. 예를 들어 증상이 개인 또는 문제 대응팀에서 즉각적인 주의가 필요한 경우 심각한 경고를 트리거해야 합니다.
1.3.5.5. 경고, 음소거, 경고 규칙 검색 및 필터링

경고 UI에 표시되는 경고, 음소거 및 경고 규칙을 필터링할 수 있습니다. 이 섹션에서는 사용 가능한 필터링 옵션 각각에 대해 설명합니다.

1.3.5.5.1. 경고 필터 이해

경고 UI의 경고 페이지는 기본 OpenShift Dedicated 및 사용자 정의 프로젝트와 관련된 경고에 대한 세부 정보를 제공합니다. 페이지에는 각 경고에 대한 심각도, 상태 및 소스가 요약되어 있습니다. 현재 상태로 경고가 표시되는 시간도 표시됩니다.

경고 상태, 심각도 및 소스로 필터링할 수 있습니다. 기본적으로 실행되는 플랫폼만 표시됩니다. 다음은 각 경고 필터링 옵션을 설명합니다.

  • 상태 필터:

    • 실행. 경고 조건이 true 이므로 경고가 실행되고 기간 동안 선택 사항이 전달됩니다. 상태가 true로 유지되는 동안 경고가 계속 실행됩니다.
    • 보류 중. 경고는 활성화되어 있지만 실행되기 전에 경고 규칙에 지정된 기간 동안 대기 중입니다.
    • 음소거. 이제 정의된 기간 동안 경고가 음소거되었습니다. 사용자가 정의한 라벨 선택기 집합에 따라 일시적으로 음소거가 경고를 음소거합니다. 나열된 모든 값 또는 정규식과 일치하는 경고에는 알림이 전송되지 않습니다.
  • 심각도 필터:

    • 심각. 경고를 트리거한 조건으로 심각한 영향을 미칠 수 있습니다. 경고는 실행 시 즉각적인 주의가 필요하며 일반적으로 개인 또는 문제 대응팀으로 호출됩니다.
    • 경고. 경고는 문제가 발생하지 않도록 주의가 필요할 수 있는 사항에 대한 경고 알림을 제공합니다. 경고는 일반적으로 즉각적이 아닌 검토에 대해 티켓 시스템으로 라우팅됩니다.
    • 정보. 경고는 정보 목적으로만 제공됩니다.
    • 없음. 경고에 정의된 심각도가 없습니다.
    • 사용자 정의 프로젝트와 관련된 경고에 대한 사용자 정의 심각도 정의를 생성할 수도 있습니다.
  • 소스 필터:

    • 플랫폼. 플랫폼 수준 경고는 기본 OpenShift Dedicated 프로젝트에만 관련이 있습니다. 이러한 프로젝트는 핵심 OpenShift Dedicated 기능을 제공합니다.
    • 사용자 사용자 경고는 사용자 정의 프로젝트와 관련되어 있습니다. 이러한 경고는 사용자가 생성하며 사용자 정의할 수 있습니다. 사용자 정의 워크로드 모니터링은 설치 후 활성화하여 자체 워크로드에 관찰 기능을 제공할 수 있습니다.
1.3.5.5.2. 음소거 필터 이해

경고 UI 의 음소거 페이지는 기본 OpenShift Dedicated 및 사용자 정의 프로젝트의 경고에 적용된 음소거에 대한 세부 정보를 제공합니다. 페이지에는 각 음소거의 상태 요약과 음소거가 종료되는 시점이 포함되어 있습니다.

음소거 상태별로 필터링할 수 있습니다. 기본적으로 활성보류 중 음소거만 표시됩니다. 다음은 각 음소거 상태 필터 옵션을 설명합니다.

  • 상태 필터:

    • 활성. 음소거가 활성 상태이며 음소거가 만료될 때까지 경고가 음소거됩니다.
    • 보류 중. 음소거 예정되어 있고 아직 활성화되지 않았습니다.
    • 만료. 경고 조건이 true이면 음소거가 만료되고 알림이 전송됩니다.
1.3.5.5.3. 경고 규칙 필터 이해

경고 UI의 경고 규칙 페이지는 기본 OpenShift Dedicated 및 사용자 정의 프로젝트와 관련된 경고 규칙에 대한 세부 정보를 제공합니다. 페이지에는 각 경고 규칙의 상태, 심각도 및 소스가 요약되어 있습니다.

경고 상태, 심각도 및 소스에 따라 경고 규칙을 필터링할 수 있습니다. 기본적으로 플랫폼 경고 규칙만 표시됩니다. 다음은 각 경고 규칙 필터링 옵션을 설명합니다.

  • 경고 상태 필터:

    • 실행. 경고 조건이 true 이므로 경고가 실행되고 기간 동안 선택 사항이 전달됩니다. 상태가 true로 유지되는 동안 경고가 계속 실행됩니다.
    • 보류 중. 경고는 활성화되어 있지만 실행되기 전에 경고 규칙에 지정된 기간 동안 대기 중입니다.
    • 음소거. 이제 정의된 기간 동안 경고가 음소거되었습니다. 사용자가 정의한 라벨 선택기 집합에 따라 일시적으로 음소거가 경고를 음소거합니다. 나열된 모든 값 또는 정규식과 일치하는 경고에는 알림이 전송되지 않습니다.
    • 실행하지 않음. 경고가 실행되지 않습니다.
  • 심각도 필터:

    • 심각. 경고 규칙에 정의된 조건이 심각한 영향을 미칠 수 있습니다. true인 경우 이러한 조건에는 즉각적인 주의가 필요합니다. 규칙과 관련된 경고는 일반적으로 개인 또는 문제 대응팀으로 호출됩니다.
    • 경고. 경고 규칙에 정의된 조건은 문제가 발생하지 않도록 주의해야 할 수 있습니다. 규칙과 관련된 경고는 일반적으로 즉각적이 아닌 검토에 대해 티켓 시스템으로 라우팅됩니다.
    • 정보. 경고 규칙은 정보성 경고만 제공합니다.
    • 없음. 경고 규칙에는 정의된 심각도가 없습니다.
    • 사용자 정의 프로젝트와 관련된 경고 규칙에 대한 사용자 정의 심각도 정의를 생성할 수도 있습니다.
  • 소스 필터:

    • 플랫폼. 플랫폼 수준 경고 규칙은 기본 OpenShift Dedicated 프로젝트에만 관련이 있습니다. 이러한 프로젝트는 핵심 OpenShift Dedicated 기능을 제공합니다.
    • 사용자 사용자 정의 워크로드 경고 규칙은 사용자 정의 프로젝트와 관련이 있습니다. 이러한 경고 규칙은 사용자가 생성하며 사용자 정의할 수 있습니다. 사용자 정의 워크로드 모니터링은 설치 후 활성화하여 자체 워크로드에 관찰 기능을 제공할 수 있습니다.

1.3.6. 사용자 정의 프로젝트에 대한 경고 라우팅 이해

전용 관리자는 사용자 정의 프로젝트에 대한 경고 라우팅을 활성화할 수 있습니다. 이 기능을 사용하면 alert-routing-edit 클러스터 역할이 있는 사용자가 사용자 정의 프로젝트에 대한 경고 알림 라우팅 및 수신자를 구성할 수 있습니다. 이러한 알림은 사용자 정의 모니터링 전용 Alertmanager 인스턴스에서 라우팅됩니다.

그런 다음 사용자는 관리자의 지원없이 사용자 정의 프로젝트에 대한 AlertmanagerConfig 오브젝트를 생성하거나 편집하여 사용자 정의 경고 라우팅을 생성하고 구성할 수 있습니다.

사용자가 사용자 정의 프로젝트에 대한 경고 라우팅을 정의한 후에는 사용자 정의 경고 알림이 openshift-user-workload-monitoring 네임스페이스의 alertmanager-user-workload Pod로 라우팅됩니다.

참고

사용자 정의 프로젝트에 대한 경고 라우팅의 다음 제한 사항을 검토하십시오.

  • 사용자 정의 경고 규칙의 경우 사용자 정의 라우팅의 범위는 리소스가 정의된 네임스페이스로 지정됩니다. 예를 들어 네임스페이스 ns1 의 라우팅 구성은 동일한 네임스페이스의 PrometheusRules 리소스에만 적용됩니다.
  • 사용자 정의 모니터링에서 네임스페이스가 제외되면 네임스페이스의 AlertmanagerConfig 리소스가 Alertmanager 구성의 일부가 됩니다.

1.3.7. 외부 시스템에 알림 전송

OpenShift Dedicated 에서는 경고 UI에서 실행 경고를 볼 수 있습니다. 알림은 기본적으로 모든 알림 시스템으로 전송되지 않습니다. 다음 수신자 유형에 경고를 전송하도록 OpenShift Dedicated를 구성할 수 있습니다.

  • PagerDuty
  • Webhook
  • 이메일
  • Slack
  • Microsoft Teams

알림을 수신기로 라우팅하면 오류가 발생할 때 적절한 팀에게 적절한 알림을 보낼 수 있습니다. 예를 들어, 심각한 경고는 즉각적인 주의가 필요하며 일반적으로 개인 또는 문제 대응팀으로 호출됩니다. 심각하지 않은 경고 알림을 제공하는 경고는 즉각적이지 않은 검토를 위해 티켓팅 시스템으로 라우팅할 수 있습니다.

워치독 경고를 사용하여 해당 경고가 제대로 작동하는지 확인

OpenShift Dedicated 모니터링에는 지속적으로 실행되는 워치독 경고가 포함되어 있습니다. Alertmanager는 구성된 알림 공급자에게 워치독 경고 알림을 반복적으로 보냅니다. 일반적으로 공급자는 워치독 경고를 수신하지 않을 때 관리자에게 알리도록 구성됩니다. 이 메커니즘을 사용하면 Alertmanager와 알림 공급자 간의 모든 통신 문제를 빠르게 식별할 수 있습니다.

2장. 시작하기

2.1. 모니터링의 유지보수 및 지원

모니터링 스택의 모든 구성 옵션이 노출되는 것은 아닙니다. OpenShift Dedicated 모니터링을 구성하려면 추가 리소스 섹션에 연결된 "Cluster Monitoring Operator 구성 참조"에 설명된 옵션을 사용하여 CCMO(Cluster Monitoring Operator)를 구성합니다. 다른 구성은 지원되지 않으므로 사용하지 마십시오.

구성 패러다임은 Prometheus 릴리스마다 변경될 수 있으며 이러한 경우는 모든 구성 가능성이 제어되는 경우에만 정상적으로 처리될 수 있습니다. 지원되지 않는 구성을 사용하는 경우 CMO가 차이점을 자동으로 조정하고 지원되지 않는 변경 사항을 기본적으로 정의된 상태로 다시 재설정하므로 변경 사항이 사라집니다.

중요

다른 Prometheus 인스턴스 설치는 Red Hat 사이트 안정성 엔지니어(SRE)에서 지원되지 않습니다.

2.1.1. 모니터링에 대한 지원 고려 사항

OpenShift Dedicated 모니터링에는 구성 제한이 있습니다. 자동화된 구성 재설정을 방지하려면 이를 이해하는 것이 중요합니다.

참고

메트릭, 기록 규칙 또는 경고 규칙에 대한 이전 버전과의 호환성은 보장되지 않습니다.

다음과 같은 수정 사항은 명시적으로 지원되지 않습니다.

  • OpenShift Dedicated에 사용자 정의 Prometheus 인스턴스 설치. 사용자 정의 인스턴스는 Prometheus Operator에서 관리하는 Prometheus CR(사용자 정의 리소스)입니다.
  • 기본 플랫폼 모니터링 구성 요소 수정 cluster-monitoring-config 구성 맵에 정의된 구성 요소를 수정하지 않아야 합니다. Red Hat SRE는 이러한 구성 요소를 사용하여 핵심 클러스터 구성 요소 및 Kubernetes 서비스를 모니터링합니다.

2.1.2. 모니터링 구성 요소에 대한 버전 매트릭스 지원

다음 매트릭스에는 OpenShift Dedicated 4.12 및 이후 릴리스의 모니터링 구성 요소 버전에 대한 정보가 포함되어 있습니다.

Expand
표 2.1. OpenShift Dedicated 및 구성 요소 버전
OpenShift DedicatedPrometheus OperatorPrometheus지표 서버Alertmanagerkube-state-metrics 에이전트monitoring-pluginnode-exporter 에이전트Thanos

4.20

0.85.0

3.5.0

0.8.0

0.28.1

2.16.0

1.0.0

1.9.1

0.39.2

4.19

0.81.0

3.2.1

0.7.2

0.28.1

2.15.0

1.0.0

1.9.1

0.37.2

4.18

0.78.1

2.55.1

0.7.2

0.27.0

2.13.0

1.0.0

1.8.2

0.36.1

4.17

0.75.2

2.53.1

0.7.1

0.27.0

2.13.0

1.0.0

1.8.2

0.35.1

4.16

0.73.2

2.52.0

0.7.1

0.26.0

2.12.0

1.0.0

1.8.0

0.35.0

4.15

0.70.0

2.48.0

0.6.4

0.26.0

2.10.1

1.0.0

1.7.0

0.32.5

4.14

0.67.1

2.46.0

해당 없음

0.25.0

2.9.2

1.0.0

1.6.1

0.30.2

4.13

0.63.0

2.42.0

해당 없음

0.25.0

2.8.1

해당 없음

1.5.0

0.30.2

4.12

0.60.1

2.39.1

해당 없음

0.24.0

2.6.0

해당 없음

1.4.0

0.28.1

참고

openshift-state-metrics 에이전트 및 Telemeter Client는 OpenShift 관련 구성 요소입니다. 따라서 해당 버전은 OpenShift Dedicated 버전에 해당합니다.

2.2. 사용자 정의 프로젝트에 대한 모니터링 액세스

OpenShift Dedicated 클러스터를 설치하면 사용자 정의 프로젝트에 대한 모니터링이 기본적으로 활성화됩니다. 사용자 정의 프로젝트를 모니터링하면 추가 모니터링 솔루션 없이도 자체 OpenShift Dedicated 프로젝트를 모니터링할 수 있습니다.

dedicated-admin 사용자에게는 사용자 정의 프로젝트에 대한 모니터링을 구성하고 액세스할 수 있는 기본 권한이 있습니다.

참고

OLM(Operator Lifecycle Manager)을 통해 설치된 사용자 정의 Prometheus 인스턴스 및 Prometheus Operator는 활성화된 경우 사용자 정의 프로젝트 모니터링에 문제가 발생할 수 있습니다. 사용자 정의 Prometheus 인스턴스는 지원되지 않습니다.

선택적으로 클러스터 설치 중 또는 설치 후 사용자 정의 프로젝트에 대한 모니터링을 비활성화할 수 있습니다.

2.3. 사용자 정의 프로젝트 모니터링 비활성화

전용 관리자는 사용자 정의 프로젝트에 대한 모니터링을 비활성화할 수 있습니다. 사용자 워크로드 모니터링에서 개별 프로젝트를 제외할 수도 있습니다.

2.3.1. 사용자 정의 프로젝트 모니터링 비활성화

기본적으로 사용자 정의 프로젝트에 대한 모니터링이 활성화됩니다. 기본 제공 모니터링 스택을 사용하여 사용자 정의 프로젝트를 모니터링하지 않으려면 비활성화할 수 있습니다.

사전 요구 사항

프로세스

  1. OpenShift Cluster Manager Hybrid Cloud Console에서 클러스터를 선택합니다.
  2. 설정 탭을 클릭합니다.
  3. 사용자 워크로드 모니터링 활성화 확인란을 클릭하여 옵션을 선택 해제한 다음 저장을 클릭합니다.

    사용자 워크로드 모니터링이 비활성화됩니다. Prometheus, Prometheus Operator 및 Thanos Ruler 구성 요소는 openshift-user-workload-monitoring 프로젝트에서 중지됩니다.

2.3.2. 모니터링에서 사용자 정의 프로젝트 제외

개별 사용자 정의 프로젝트는 사용자 워크로드 모니터링에서 제외될 수 있습니다. 이렇게 하려면 값이 false 인 프로젝트의 네임스페이스에 openshift.io/user-monitoring 레이블을 추가합니다.

프로세스

  1. 프로젝트 네임스페이스에 라벨을 추가합니다.

    $ oc label namespace my-project 'openshift.io/user-monitoring=false'
  2. 모니터링을 다시 활성화하려면 네임스페이스에서 라벨을 제거합니다.

    $ oc label namespace my-project 'openshift.io/user-monitoring-'
    참고

    프로젝트에 대한 활성 모니터링 대상이 있는 경우 레이블을 추가한 후 Prometheus가 스크랩을 중지하는 데 몇 분이 걸릴 수 있습니다.

3장. 사용자 워크로드 모니터링 구성

3.1. 사용자 워크로드 모니터링 스택 구성 준비

이 섹션에서는 구성할 수 있는 사용자 정의 모니터링 구성 요소와 사용자 워크로드 모니터링 스택 구성을 준비하는 방법을 설명합니다.

중요

3.1.1. 구성 가능한 모니터링 구성 요소

이 표는 구성할 수 있는 모니터링 구성 요소와 user-workload-monitoring-config 구성 맵에서 구성 요소를 지정하는 데 사용되는 키를 보여줍니다.

주의

cluster-monitoring-config ConfigMap 오브젝트에서 모니터링 구성 요소를 수정하지 마십시오. Red Hat 사이트 안정성 엔지니어(SRE)는 이러한 구성 요소를 사용하여 핵심 클러스터 구성 요소 및 Kubernetes 서비스를 모니터링합니다.

Expand
표 3.1. 사용자 정의 프로젝트에 대한 구성 가능한 모니터링 구성 요소
Componentuser-workload-monitoring-config 구성 맵 키

Prometheus Operator

prometheusOperator

Prometheus

prometheus

Alertmanager

alertmanager

Thanos Ruler

thanosRuler

3.1.2. 사용자 정의 프로젝트에 대한 경고 라우팅 활성화

OpenShift Dedicated에서 관리자는 사용자 정의 프로젝트에 대한 경고 라우팅을 활성화할 수 있습니다. 이 프로세스는 다음 단계로 구성됩니다.

  • 사용자 정의 프로젝트에 대한 경고 라우팅을 활성화하여 별도의 Alertmanager 인스턴스를 사용합니다.
  • 사용자 정의 프로젝트에 대한 경고 라우팅을 구성할 수 있는 권한을 사용자에게 부여합니다.

이러한 단계를 완료하면 개발자 및 기타 사용자가 사용자 정의 경고를 구성하고 사용자 정의 프로젝트에 대한 라우팅을 경고할 수 있습니다.

OpenShift Dedicated에서는 기본 플랫폼 경고와 별도로 사용자 정의 경고를 제공하는 사용자 정의 프로젝트에 대한 전용 Alertmanager 인스턴스를 배포할 수 있습니다. 이 경우 별도의 Alertmanager 인스턴스를 선택적으로 활성화하여 사용자 정의 프로젝트에 대한 경고만 보낼 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. user-workload-monitoring-config ConfigMap 오브젝트를 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 아래의 alertmanager 섹션에 있는 enabled: trueenableAlertmanagerConfig: true 를 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        alertmanager:
          enabled: true 
    1
    
          enableAlertmanagerConfig: true 
    2
    1
    클러스터에서 사용자 정의 프로젝트에 대해 Alertmanager의 전용 인스턴스를 활성화하려면 enabled 값을 true 로 설정합니다. 값을 false 로 설정하거나 사용자 정의 프로젝트에 대해 Alertmanager를 비활성화하려면 키를 완전히 생략합니다. 이 값을 false 로 설정하거나 키가 생략된 경우 사용자 정의 경고가 기본 플랫폼 Alertmanager 인스턴스로 라우팅됩니다.
    2
    사용자가 AlertmanagerConfig 오브젝트를 사용하여 자체 경고 라우팅 구성을 정의할 수 있도록 enableAlertmanagerConfig 값을 true 로 설정합니다.
  3. 파일을 저장하여 변경 사항을 적용합니다. 사용자 정의 프로젝트에 대한 Alertmanager의 전용 인스턴스가 자동으로 시작됩니다.

검증

  • alert-manager-user-workload Pod가 실행 중인지 확인합니다.

    $ oc -n openshift-user-workload-monitoring get pods

    출력 예

    NAME                                   READY   STATUS    RESTARTS   AGE
    alertmanager-user-workload-0           6/6     Running   0          38s
    alertmanager-user-workload-1           6/6     Running   0          38s
    ...

사용자 정의 프로젝트에 대한 경고 라우팅을 구성할 수 있는 권한을 사용자에게 부여할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • 이미 존재하는 역할에 할당 중인 사용자 계정입니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  • 사용자 정의 프로젝트의 사용자에게 alert-routing-edit 클러스터 역할을 할당합니다.

    $ oc -n <namespace> adm policy add-role-to-user alert-routing-edit <user> 
    1
    1
    <namespace>의 경우 ns1 과 같은 사용자 정의 프로젝트의 네임스페이스를 대체합니다. <user>에게 역할을 할당하려는 계정의 사용자 이름을 대체합니다.

3.2. 사용자 워크로드 모니터링을 위한 성능 및 확장성 구성

클러스터의 성능과 스케일링을 최적화하도록 모니터링 스택을 구성할 수 있습니다. 다음 문서에서는 모니터링 구성 요소를 배포하고 CPU 및 메모리 리소스에 대한 모니터링 스택의 영향을 제어하는 방법에 대한 정보를 제공합니다.

3.2.1. 모니터링 구성 요소의 배치 및 배포 제어

모니터링 스택 구성 요소를 특정 노드로 이동할 수 있습니다.

  • 라벨이 지정된 노드에 nodeSelector 제약 조건을 사용하여 모니터링 스택 구성 요소를 특정 노드로 이동합니다.
  • 테인트된 노드로 이동하는 구성 요소를 활성화하려면 허용 오차를 할당합니다.

이렇게 하면 클러스터 전체에서 모니터링 구성 요소의 배치 및 배포를 제어할 수 있습니다.

모니터링 구성 요소의 배치 및 배포를 제어하면 시스템 리소스 사용을 최적화하고 성능을 개선하고 특정 요구 사항 또는 정책을 기반으로 워크로드를 분리할 수 있습니다.

3.2.1.1. 다른 노드로 모니터링 구성 요소 이동

사용자 정의 프로젝트의 워크로드를 모니터링하는 구성 요소를 특정 작업자 노드로 이동할 수 있습니다.

주의

구성 요소를 컨트롤 플레인 또는 인프라 노드로 이동할 수 없습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 아직 수행하지 않은 경우 모니터링 구성 요소를 실행할 노드에 라벨을 추가합니다.

    $ oc label nodes <node_name> <node_label> 
    1
    1
    & lt;node_name >을 레이블을 추가할 노드의 이름으로 바꿉니다. & lt;node_label >을 원하는 라벨 이름으로 바꿉니다.
  2. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config ConfigMap 오브젝트를 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  3. data/config.yaml 에서 구성 요소의 nodeSelector 제약 조건의 노드 레이블을 지정합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        # ...
        <component>: 
    1
    
          nodeSelector:
            <node_label_1> 
    2
    
            <node_label_2> 
    3
    
        # ...
    1
    <component> 를 적절한 모니터링 스택 구성 요소 이름으로 바꿉니다.
    2
    <node_label_1>을 노드에 추가한 레이블로 바꾸세요.
    3
    선택 사항: 추가 라벨을 지정합니다. 추가 라벨을 지정하면 구성 요소의 Pod는 지정된 모든 라벨이 포함된 노드에만 예약됩니다.
    참고

    nodeSelector 제약 조건을 구성한 후 모니터링 구성 요소가 Pending 상태인 경우 테인트(Taints) 및 톨러레이션(Tolerations)과 관련된 오류에 대한 Pod 이벤트를 확인합니다.

  4. 파일을 저장하여 변경 사항을 적용합니다. 새 구성에 지정된 구성 요소가 자동으로 새 노드로 이동되고 새 구성의 영향을 받는 Pod가 재배포됩니다.
3.2.1.2. 모니터링 구성 요소에 허용 오차 할당

사용자 정의 프로젝트를 모니터링하는 구성 요소에 허용 오차를 할당하여 테인트된 작업자 노드로 이동할 수 있습니다. 컨트롤 플레인 또는 인프라 노드에서 예약이 허용되지 않습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트는 openshift-user-workload-monitoring 네임스페이스에 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 구성 요소에 대한 tolerations를 지정합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        <component>:
          tolerations:
            <toleration_specification>

    이에 따라 <component><toleration_specification>을 바꿉니다.

    예를 들어 oc adm taint nodes node1 key1=value1:NoSchedulekey1의 키와 value1의 값이 있는 node1에 테인트를 추가합니다. 이렇게 하면 해당 테인트에 허용 오차가 구성되지 않는 한 node1에 모니터링 구성 요소가 배포되지 않습니다. 다음 예제는 예제 테인트를 허용하도록 thanosRuler 구성 요소를 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        thanosRuler:
          tolerations:
          - key: "key1"
            operator: "Equal"
            value: "value1"
            effect: "NoSchedule"
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.

3.2.2. 모니터링 구성 요소를 위한 CPU 및 메모리 리소스 관리

모니터링 구성 요소를 실행하는 컨테이너에 리소스 제한 및 해당 구성 요소에 대한 요청을 지정하여 충분한 CPU 및 메모리 리소스가 있는지 확인할 수 있습니다.

openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 프로젝트를 모니터링하는 모니터링 구성 요소에 대한 제한 및 요청을 구성할 수 있습니다.

3.2.2.1. 제한 및 요청 지정

CPU 및 메모리 리소스를 구성하려면 openshift-user-workload-monitoring 네임스페이스의 user-workload-monitoring-config ConfigMap 오브젝트에서 리소스 제한 및 요청 값을 지정합니다.

사전 요구 사항

  • cluster-admin 클러스터 역할의 사용자로 또는 openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 구성할 각 구성 요소에 대한 리소스 제한 및 요청을 정의하는 값을 추가합니다.

    중요

    제한에 설정된 값이 요청에 설정된 값보다 항상 높은지 확인합니다. 그러지 않으면 오류가 발생하고 컨테이너가 실행되지 않습니다.

    리소스 제한 및 요청 설정 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        alertmanager:
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 200m
              memory: 500Mi
        prometheus:
          resources:
            limits:
              cpu: 500m
              memory: 3Gi
            requests:
              cpu: 200m
              memory: 500Mi
        thanosRuler:
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 200m
              memory: 500Mi

  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.

dedicated-admin 은 다음 측정값을 사용하여 사용자 정의 프로젝트에서 바인딩되지 않은 메트릭 속성의 영향을 제어할 수 있습니다.

  • 사용자 정의 프로젝트에서 대상 스크랩별로 허용할 수 있는 샘플 수 제한
  • 스크랩된 라벨 수, 라벨 이름 길이 및 라벨 값 길이 제한
  • 연속 스크랩과 Prometheus 규칙 평가 사이의 간격 구성
참고

스크랩 샘플 제한으로 인해 라벨에 많은 바인딩되지 않는 속성을 추가하여 문제가 발생하지 않도록 할 수 있습니다. 개발자는 메트릭에 대해 정의된 바인딩되지 않은 속성 수를 제한하여 기본 원인을 방지할 수도 있습니다. 사용 가능한 값의 제한된 집합에 바인딩되는 속성을 사용하면 가능한 키 - 값 쌍 조합의 수가 줄어듭니다.

사용자 정의 프로젝트에 대해 다음 스크랩 및 라벨 제한을 설정할 수 있습니다.

  • 대상 스크랩별로 허용할 수 있는 샘플 수 제한
  • 스크랩된 라벨 수 제한
  • 레이블 이름 및 라벨 값의 길이 제한

연속 스크랩과 Prometheus 규칙 평가 사이의 간격을 설정할 수도 있습니다.

주의

샘플 또는 레이블 제한을 설정하면 제한에 도달한 후 해당 대상 스크랩에 대한 추가 샘플 데이터가 사용되지 않습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config ConfigMap 오브젝트를 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml:에 강제 제한 및 시간 간격 구성을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          enforcedSampleLimit: 50000 
    1
    
          enforcedLabelLimit: 500 
    2
    
          enforcedLabelNameLengthLimit: 50 
    3
    
          enforcedLabelValueLengthLimit: 600 
    4
    
          scrapeInterval: 1m30s 
    5
    
          evaluationInterval: 1m15s 
    6
    1
    이 매개변수가 지정된 경우 값이 필요합니다. 이 enforcedSampleLimit 예제에서는 사용자 정의 프로젝트의 대상 스크랩별로 허용할 수 있는 샘플 수를 50,000개로 제한합니다.
    2
    스크랩당 최대 라벨 수를 지정합니다. 기본값은 0 이며, 제한이 없음을 지정합니다.
    3
    레이블 이름의 최대 문자 길이를 지정합니다. 기본값은 0 이며, 제한이 없음을 지정합니다.
    4
    레이블 값의 최대 문자 길이를 지정합니다. 기본값은 0 이며, 제한이 없음을 지정합니다.
    5
    연속 스크랩 사이의 간격을 지정합니다. 간격을 5초에서 5분으로 설정해야 합니다. 기본값은 30s입니다.
    6
    Prometheus 규칙 평가 사이의 간격을 지정합니다. 간격을 5초에서 5분으로 설정해야 합니다. Prometheus의 기본값은 30s 입니다.
    참고

    data/config.yaml/thanosRuler 필드를 통해 Thanos Ruler에 대한 evaluationInterval 속성을 구성할 수도 있습니다. Thanos Ruler의 기본값은 15s 입니다.

  3. 파일을 저장하여 변경 사항을 적용합니다. 제한이 자동으로 적용됩니다.

3.2.4. Pod 토폴로지 분배 제약 조건 구성

사용자 정의 모니터링을 위해 모든 Pod에 대한 Pod 토폴로지 분배 제약 조건을 구성하여 영역 전체의 노드에 Pod 복제본을 예약하는 방법을 제어할 수 있습니다. 이렇게 하면 워크로드가 다른 데이터 센터 또는 계층적 인프라 영역의 노드에 분산되므로 Pod를 고가용성 및 더 효율적으로 실행할 수 있습니다.

user-workload-monitoring-config 구성 맵을 사용하여 Pod 모니터링에 대한 Pod 토폴로지 분배 제약 조건을 구성할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 필드 아래에 다음 설정을 추가하여 Pod 토폴로지 분배 제약 조건을 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          topologySpreadConstraints:
          - maxSkew: <n> 
    2
    
            topologyKey: <key> 
    3
    
            whenUnsatisfiable: <value> 
    4
    
            labelSelector: 
    5
    
              <match_option>
    1
    Pod 토폴로지 분배 제약 조건을 설정할 구성 요소의 이름을 지정합니다.
    2
    maxSkew 에 대한 숫자 값을 지정합니다. 이 값은 균등하게 분배될 수 있는 Pod를 정의합니다.
    3
    topologyKey의 노드 라벨 키를 지정합니다. 이 키와 동일한 값이 있는 라벨이 있는 노드는 동일한 토폴로지에 있는 것으로 간주됩니다. 스케줄러는 균형 잡힌 수의 pod를 각 도메인에 배치하려고 합니다.
    4
    whenUnsatisfiable 의 값을 지정합니다. 사용 가능한 옵션은 DoNotScheduleScheduleAnyway 입니다. maxSkew 값을 사용하여 대상 토폴로지의 일치하는 Pod 수와 글로벌 최소값 간에 허용되는 최대 차이를 정의하도록 DoNotSchedule 을 지정합니다. 스케줄러에서 Pod를 계속 예약하지만 불일치를 줄일 수 있는 노드에 더 높은 우선 순위를 부여하려면 ScheduleAnyway 를 지정합니다.
    5
    일치하는 포드를 찾으려면 labelSelector 를 지정합니다. 이 라벨 선택기와 일치하는 Pod는 해당 토폴로지 도메인의 Pod 수를 확인하기 위해 계산됩니다.

    Thanos Ruler 구성 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        thanosRuler:
          topologySpreadConstraints:
          - maxSkew: 1
            topologyKey: monitoring
            whenUnsatisfiable: ScheduleAnyway
            labelSelector:
              matchLabels:
                app.kubernetes.io/name: thanos-ruler

  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.

3.3. 사용자 워크로드 모니터링을 위한 데이터 저장 및 기록

메트릭 및 경고 데이터를 저장 및 기록하고, 로그를 구성하여 기록되는 활동을 지정하고, Prometheus가 저장된 데이터를 유지하는 기간을 제어하고, 데이터의 최대 디스크 공간을 설정합니다. 이러한 작업을 수행하면 데이터를 보호하고 문제 해결에 사용할 수 있습니다.

3.3.1. 영구 스토리지 구성

영구 스토리지로 클러스터 모니터링을 실행하여 다음과 같은 이점을 얻을 수 있습니다.

  • PV(영구 볼륨)에 저장하여 데이터 손실로부터 메트릭 및 경고 데이터를 보호합니다. 결과적으로 Pod를 다시 시작하거나 다시 생성할 수 있습니다.
  • Alertmanager Pod가 다시 시작되면 중복 알림이 발생하지 않고 경고에 대한 음소거가 손실되지 않습니다.
중요

멀티 노드 클러스터에서는 고가용성을 보장하기 위해 Prometheus, Alertmanager 및 Thanos Ruler에 대한 영구 스토리지를 구성해야 합니다.

참고

프로덕션 환경의 경우 영구 스토리지를 구성하는 것이 매우 좋습니다.

3.3.1.1. 영구 스토리지 사전 요구 사항
  • 스토리지의 블록 유형을 사용합니다.
3.3.1.2. 영구 볼륨 클레임 구성

구성 요소를 모니터링하기 위해 PV(영구 볼륨)를 사용하려면 PVC(영구 볼륨 클레임)를 구성해야 합니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 아래의 구성 요소에 대한 PVC 구성을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          volumeClaimTemplate:
            spec:
              storageClassName: <storage_class> 
    2
    
              resources:
                requests:
                  storage: <amount_of_storage> 
    3
    1
    PVC를 구성할 모니터링 구성 요소를 지정합니다.
    2
    기존 스토리지 클래스를 지정합니다. 스토리지 클래스를 지정하지 않으면 기본 스토리지 클래스가 사용됩니다.
    3
    필요한 스토리지의 양을 지정합니다.

    다음 예제에서는 Thanos Ruler의 영구 스토리지를 요청하는 PVC를 구성합니다.

    PVC 구성 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        thanosRuler:
          volumeClaimTemplate:
            spec:
              storageClassName: my-storage-class
              resources:
                requests:
                  storage: 10Gi

    참고

    thanosRuler 구성 요소의 스토리지 요구 사항은 평가되는 규칙 수와 각 규칙이 생성하는 샘플 수에 따라 달라집니다.

  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포되고 새 스토리지 구성이 적용됩니다.

    주의

    PVC 구성으로 구성 맵을 업데이트하면 영향을 받는 StatefulSet 오브젝트가 다시 생성되어 임시 서비스가 중단됩니다.

3.3.2. Prometheus 메트릭 데이터의 보존 시간 및 크기 수정

기본적으로 Prometheus는 사용자 정의 프로젝트 모니터링을 위해 지표 데이터를 24시간 동안 유지합니다. 데이터를 삭제할 때 Prometheus 인스턴스의 보존 시간을 수정하여 변경할 수 있습니다. 보존 메트릭 데이터에서 사용하는 최대 디스크 공간을 설정할 수도 있습니다.

참고

데이터 압축은 2시간마다 수행됩니다. 따라서 PV(영구 볼륨)가 압축하기 전에 채워지고 보존Size 제한을 초과할 수 있습니다. 이러한 경우 KubePersistentVolumeFillingUp 경고가 PV의 공간이 retentionSize 제한보다 작을 때까지 실행됩니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 아래에 보존 시간 및 크기 구성을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          retention: <time_specification> 
    1
    
          retentionSize: <size_specification> 
    2
    1
    보존 시간: ms (밀리초), s (초), m (분), h (시간), d (일), w (주) 또는 y (년)가 직접 따르는 번호입니다. 1h30m15s 와 같은 특정 시간 동안 시간 값을 결합할 수도 있습니다.
    2
    보존 크기: 숫자 바로 뒤에 B (bytes), KB (kilobytes), MB (megabytes), GB (gigabytes), TB (terabytes), PB (petabytes), EB (exabytes)가 옵니다.

    다음 예제에서는 보존 시간을 24시간으로 설정하고 Prometheus 인스턴스의 보존 크기를 10GB로 설정합니다.

    Prometheus의 보존 시간 설정 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          retention: 24h
          retentionSize: 10GB

  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.
3.3.2.1. Thanos Ruler 메트릭 데이터의 보존 시간 수정

기본적으로 사용자 정의 프로젝트의 경우 Thanos Ruler는 지표 데이터를 24시간 동안 자동으로 유지합니다. openshift-user-workload-monitoring 네임스페이스의 user-workload-monitoring-config 구성 맵에 시간 값을 지정하여 이 데이터 보존 기간을 변경할 수 있습니다.

참고

user-workload Prometheus에 대한 보존을 구성하는 경우 Thanos Ruler는 명시적으로 구성된 경우를 제외하고 동일한 보존 시간을 자동으로 상속합니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config ConfigMap 오브젝트를 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 아래에 보존 시간 구성을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        thanosRuler:
          retention: <time_specification> 
    1
    1
    다음 형식으로 보존 시간을 지정합니다. ms (milliseconds), s (초), m (분), h (시간), d (일), w (주) 또는 y (년)입니다. 1h30m15s 와 같은 특정 시간 동안 시간 값을 결합할 수도 있습니다. 기본값은 24h 입니다.

    다음 예제에서는 Thanos Ruler 데이터의 보존 시간을 10일로 설정합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        thanosRuler:
          retention: 10d
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.

3.3.3. 모니터링 구성 요소에 대한 로그 수준 설정

Alertmanager, Prometheus Operator, Prometheus 및 Thanos Ruler의 로그 수준을 구성할 수 있습니다. 이러한 설정을 사용하여 문제 해결 및 구성 요소가 작동하는 방법에 대한 더 나은 통찰력을 얻을 수 있습니다.

다음 로그 수준은 user-workload-monitoring-config ConfigMap 오브젝트의 관련 구성 요소에 적용할 수 있습니다.

  • debug. 디버그, 정보, 경고 및 오류 메시지를 기록합니다.
  • info (기본값). 정보, 경고 및 오류 메시지를 기록합니다.
  • warn. 경고 및 오류 메시지만 기록합니다.
  • error. 오류 메시지만 기록합니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 아래에 구성 요소의 로그 구성을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          logLevel: <log_level> 
    2
    
        # ...
    1
    로그 수준을 설정하는 모니터링 스택 구성 요소를 지정합니다. 사용 가능한 구성 요소 값은 prometheus,alertmanager,prometheusOperator, thanosRuler 입니다.
    2
    구성 요소의 로그 수준을 지정합니다. 사용 가능한 값은 error,warn,info, debug 입니다. 기본값은 info 입니다.
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.
  4. 관련 프로젝트의 배포 또는 Pod 구성을 검토하여 로그 구성이 적용되었는지 확인합니다.

    • 다음 예제에서는 prometheus-operator 배포의 로그 수준을 확인합니다.

      $ oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml | grep "log-level"

      출력 예

              - --log-level=debug

  5. 구성 요소의 Pod가 실행 중인지 확인합니다.

    $ oc -n openshift-user-workload-monitoring get pods
    참고

    인식할 수 없는 logLevel 값이 ConfigMap 오브젝트에 포함된 경우 구성 요소의 Pod가 다시 시작되지 않을 수 있습니다.

3.3.4. Prometheus의 쿼리 로그 파일 활성화

엔진에서 실행한 모든 쿼리를 로그 파일에 작성하도록 Prometheus를 구성할 수 있습니다.

중요

로그 순환은 지원되지 않으므로 문제를 해결해야 하는 경우에만 이 기능을 일시적으로 활성화합니다. 문제 해결을 완료한 후 ConfigMap 오브젝트의 변경 사항을 되돌려 기능을 활성화하여 쿼리 로깅을 비활성화합니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml:에서 Prometheus의 queryLogFile 매개변수를 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          queryLogFile: <path> 
    1
    1
    쿼리가 기록될 파일의 전체 경로를 추가합니다.
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.
  4. 구성 요소의 포드가 실행 중인지 확인합니다. 다음 샘플 명령은 Pod 상태를 나열합니다.

    $ oc -n openshift-user-workload-monitoring get pods

    출력 예

    ...
    prometheus-operator-776fcbbd56-2nbfm   2/2     Running   0          132m
    prometheus-user-workload-0             5/5     Running   1          132m
    prometheus-user-workload-1             5/5     Running   1          132m
    thanos-ruler-user-workload-0           3/3     Running   0          132m
    thanos-ruler-user-workload-1           3/3     Running   0          132m
    ...

  5. 쿼리 로그를 읽습니다.

    $ oc -n openshift-user-workload-monitoring exec prometheus-user-workload-0 -- cat <path>
    중요

    기록된 쿼리 정보를 검사한 후 구성 맵에서 설정을 되돌립니다.

3.4. 사용자 워크로드 모니터링에 대한 메트릭 구성

클러스터 구성 요소 및 자체 워크로드의 수행 방식을 모니터링하도록 메트릭 컬렉션을 구성합니다.

장기 저장을 위해 수집된 메트릭을 원격 시스템에 전송하고, 메트릭에 클러스터 ID 레이블을 추가하여 다른 클러스터에서 들어오는 데이터를 확인할 수 있습니다.

3.4.1. 원격 쓰기 스토리지 구성

Prometheus가 장기 스토리지의 원격 시스템에 인가된 지표를 보낼 수 있도록 원격 쓰기 스토리지를 구성할 수 있습니다. 이렇게 하면 Prometheus가 메트릭을 저장하는 방법 또는 길이에 영향을 미치지 않습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • Thanos와 같은 원격 쓰기 호환 엔드포인트를 설정하고 엔드포인트 URL을 알고 있어야 합니다. 원격 쓰기 기능과 호환되는 엔드포인트에 대한 정보는 Prometheus 원격 엔드포인트 및 스토리지 설명서를 참조하십시오.

    중요

    Red Hat은 원격 쓰기 전송자 구성에 대한 정보만 제공하고 수신자 엔드포인트 구성에 대한 지침을 제공하지 않습니다. 고객은 원격 쓰기 호환 가능한 자체 엔드포인트를 설정해야 합니다. 엔드포인트 수신자 구성 문제는 Red Hat 프로덕션 지원에 포함되어 있지 않습니다.

  • 원격 쓰기 끝점에 대한 Secret 오브젝트에 인증 정보를 설정했습니다. openshift-user-workload-monitoring 네임스페이스에 보안을 생성해야 합니다.

    주의

    보안 위험을 줄이려면 HTTPS 및 인증을 사용하여 메트릭을 엔드포인트에 보냅니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 다음 예와 같이 data/config.yaml/prometheusremoteWrite: 섹션을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com" 
    1
    
            <endpoint_authentication_credentials> 
    2
    1
    원격 쓰기 엔드 포인트의 URL입니다.
    2
    엔드 포인트의 인증 방법 및 자격 증명입니다. 현재 지원되는 인증 방법은 AWS Signature Version 4입니다. 인증 요청 헤더에서 HTTP를 사용한 Authorization, 기본 인증, OAuth 2.0 및 TLS 클라이언트입니다. 지원되는 인증 방법에 대한 샘플 구성은 지원되는 원격 쓰기 인증 설정을 참조하세요.
  3. 인증 정보 뒤에 쓰기 재레이블 구성 값을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            <endpoint_authentication_credentials>
            writeRelabelConfigs:
            - <your_write_relabel_configs> 
    1
    1
    원격 엔드포인트에 보낼 메트릭에 대한 구성을 추가합니다.

    my_metric이라는 단일 메트릭 전달 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            writeRelabelConfigs:
            - sourceLabels: [__name__]
              regex: 'my_metric'
              action: keep

    my_namespace 네임스페이스에서 my_metric_1my_metric_2 라는 전달 메트릭의 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            writeRelabelConfigs:
            - sourceLabels: [__name__,namespace]
              regex: '(my_metric_1|my_metric_2);my_namespace'
              action: keep

  4. 파일을 저장하여 변경 사항을 적용합니다. 새 구성이 자동으로 적용됩니다.
3.4.1.1. 지원되는 원격 쓰기 인증 설정

다른 방법을 사용하여 원격 쓰기 엔드포인트로 인증할 수 있습니다. 현재 지원되는 인증 방법은 AWS 서명 버전 4, 기본 인증, 권한 부여, OAuth 2.0 및 TLS 클라이언트입니다. 다음 표에서는 원격 쓰기에 사용할 지원되는 인증 방법에 대한 세부 정보를 제공합니다.

Expand
인증 방법구성 맵 필드설명

AWS 서명 버전 4

sigv4

이 방법은 AWS Signature Version 4 인증을 사용하여 요청에 서명합니다. 이 방법은 권한 부여, OAuth 2.0 또는 기본 인증과 동시에 사용할 수 없습니다.

기본 인증

basicAuth

기본 인증은 구성된 사용자 이름 및 암호로 모든 원격 쓰기 요청에 권한 부여 헤더를 설정합니다.

권한 부여

권한 부여

권한 부여는 구성된 토큰을 사용하여 모든 원격 쓰기 요청에 Authorization 헤더를 설정합니다.

OAuth 2.0

oauth2

OAuth 2.0 구성에서는 클라이언트 자격 증명 부여 유형을 사용합니다. Prometheus는 원격 쓰기 엔드포인트에 액세스하기 위해 지정된 클라이언트 ID 및 클라이언트 시크릿을 사용하여 tokenUrl 에서 액세스 토큰을 가져옵니다. 이 방법은 권한 부여, AWS Signature 버전 4 또는 기본 인증과 동시에 사용할 수 없습니다.

TLS 클라이언트

tlsConfig

TLS 클라이언트 구성은 TLS를 사용하여 원격 쓰기 엔드포인트 서버로 인증하는 데 사용되는 CA 인증서, 클라이언트 인증서, 클라이언트 키 파일 정보를 지정합니다. 샘플 구성은 이미 CA 인증서 파일, 클라이언트 인증서 파일 및 클라이언트 키 파일을 생성했다고 가정합니다.

3.4.1.2. 원격 쓰기 인증 설정의 예

다음 샘플에서는 원격 쓰기 끝점에 연결하는 데 사용할 수 있는 다양한 인증 설정을 보여줍니다. 각 샘플에서는 인증 자격 증명 및 기타 관련 설정을 포함하는 해당 Secret 오브젝트를 구성하는 방법도 보여줍니다. 각 샘플은 openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 프로젝트에 대한 모니터링과 함께 사용할 인증을 구성합니다.

3.4.1.2.1. AWS Signature Version 4 인증을 위한 샘플 YAML

다음은 openshift-user-workload-monitoring 네임스페이스에서 sigv4-credentials 라는 sigv4 보안에 대한 설정을 보여줍니다.

apiVersion: v1
kind: Secret
metadata:
  name: sigv4-credentials
  namespace: openshift-user-workload-monitoring
stringData:
  accessKey: <AWS_access_key> 
1

  secretKey: <AWS_secret_key> 
2

type: Opaque
1
AWS API 액세스 키입니다.
2
AWS API 시크릿 키입니다.

다음은 openshift-user-workload-monitoring 네임스페이스에서 sigv4-credentials 라는 Secret 오브젝트를 사용하는 샘플 AWS 서명 버전 4 원격 쓰기 인증 설정을 보여줍니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: user-workload-monitoring-config
  namespace: openshift-user-workload-monitoring
data:
  config.yaml: |
    prometheus:
      remoteWrite:
      - url: "https://authorization.example.com/api/write"
        sigv4:
          region: <AWS_region> 
1

          accessKey:
            name: sigv4-credentials 
2

            key: accessKey 
3

          secretKey:
            name: sigv4-credentials 
4

            key: secretKey 
5

          profile: <AWS_profile_name> 
6

          roleArn: <AWS_role_arn> 
7
1
AWS 리전입니다.
2 4
AWS API 액세스 인증 정보가 포함된 Secret 오브젝트의 이름입니다.
3
지정된 Secret 오브젝트에 AWS API 액세스 키가 포함된 키입니다.
5
지정된 Secret 오브젝트에 AWS API 시크릿 키가 포함된 키입니다.
6
인증에 사용되는 AWS 프로필의 이름입니다.
7
역할에 할당된 ARM(Amazon Resource Name)의 고유 식별자입니다.
3.4.1.2.2. 기본 인증을 위한 샘플 YAML

다음은 openshift-user-workload-monitoring 네임스페이스에 rw-basic-auth 라는 Secret 오브젝트에 대한 샘플 기본 인증 설정을 보여줍니다.

apiVersion: v1
kind: Secret
metadata:
  name: rw-basic-auth
  namespace: openshift-user-workload-monitoring
stringData:
  user: <basic_username> 
1

  password: <basic_password> 
2

type: Opaque
1
사용자 이름입니다.
2
암호입니다.

다음 샘플은 openshift-user-workload-monitoring 네임스페이스에서 rw-basic-auth 라는 Secret 오브젝트를 사용하는 basicAuth 원격 쓰기 구성을 보여줍니다. 끝점에 대한 인증 자격 증명을 이미 설정했다고 가정합니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: user-workload-monitoring-config
  namespace: openshift-user-workload-monitoring
data:
  config.yaml: |
    prometheus:
      remoteWrite:
      - url: "https://basicauth.example.com/api/write"
        basicAuth:
          username:
            name: rw-basic-auth 
1

            key: user 
2

          password:
            name: rw-basic-auth 
3

            key: password 
4
1 3
인증 인증 정보가 포함된 Secret 오브젝트의 이름입니다.
2
지정된 Secret 오브젝트에 사용자 이름이 포함된 키입니다.
4
지정된 Secret 오브젝트에 암호가 포함된 키입니다.

다음은 openshift-user-workload-monitoring 네임스페이스에 rw-bearer-auth 라는 Secret 오브젝트에 대한 전달자 토큰 설정을 보여줍니다.

apiVersion: v1
kind: Secret
metadata:
  name: rw-bearer-auth
  namespace: openshift-user-workload-monitoring
stringData:
  token: <authentication_token> 
1

type: Opaque
1
인증 토큰입니다.

다음은 openshift-user-workload-monitoring 네임스페이스에서 rw-bearer-auth 라는 Secret 오브젝트를 사용하는 샘플 전달자 토큰 구성 맵 설정을 보여줍니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: user-workload-monitoring-config
  namespace: openshift-user-workload-monitoring
data:
  config.yaml: |
    prometheus:
      remoteWrite:
      - url: "https://authorization.example.com/api/write"
        authorization:
          type: Bearer 
1

          credentials:
            name: rw-bearer-auth 
2

            key: token 
3
1
요청의 인증 유형입니다. 기본값은 Bearer 입니다.
2
인증 인증 정보가 포함된 Secret 오브젝트의 이름입니다.
3
지정된 Secret 오브젝트에 인증 토큰이 포함된 키입니다.
3.4.1.2.4. OAuth 2.0 인증을 위한 샘플 YAML

다음은 openshift-user-workload-monitoring 네임스페이스에서 oauth2-credentials 라는 Secret 오브젝트에 대한 샘플 OAuth 2.0 설정을 보여줍니다.

apiVersion: v1
kind: Secret
metadata:
  name: oauth2-credentials
  namespace: openshift-user-workload-monitoring
stringData:
  id: <oauth2_id> 
1

  secret: <oauth2_secret> 
2

type: Opaque
1
Oauth 2.0 ID
2
OAuth 2.0 시크릿입니다.

다음은 openshift-user-workload-monitoring 네임스페이스에서 oauth2-credentials 라는 Secret 오브젝트를 사용하는 oauth2 원격 쓰기 인증 샘플 구성을 보여줍니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: user-workload-monitoring-config
  namespace: openshift-user-workload-monitoring
data:
  config.yaml: |
    prometheus:
      remoteWrite:
      - url: "https://test.example.com/api/write"
        oauth2:
          clientId:
            secret:
              name: oauth2-credentials 
1

              key: id 
2

          clientSecret:
            name: oauth2-credentials 
3

            key: secret 
4

          tokenUrl: https://example.com/oauth2/token 
5

          scopes: 
6

          - <scope_1>
          - <scope_2>
          endpointParams: 
7

            param1: <parameter_1>
            param2: <parameter_2>
1 3
해당 Secret 오브젝트의 이름입니다. ClientId 는 대신 ConfigMap 오브젝트를 참조할 수 있지만 clientSecretSecret 오브젝트를 참조해야 합니다.
2 4
지정된 Secret 오브젝트에 OAuth 2.0 인증 정보가 포함된 키입니다.
5
지정된 clientIdclientSecret 을 사용하여 토큰을 가져오는 데 사용되는 URL입니다.
6
권한 부여 요청에 대한 OAuth 2.0 범위입니다. 이러한 범위는 토큰이 액세스할 수 있는 데이터를 제한합니다.
7
권한 부여 서버에 필요한 OAuth 2.0 권한 부여 요청 매개변수입니다.
3.4.1.2.5. TLS 클라이언트 인증을 위한 샘플 YAML

다음은 openshift-user-workload-monitoring 네임스페이스에서 mtls-bundle 이라는 tls Secret 오브젝트에 대한 샘플 TLS 클라이언트 설정을 보여줍니다.

apiVersion: v1
kind: Secret
metadata:
  name: mtls-bundle
  namespace: openshift-user-workload-monitoring
data:
  ca.crt: <ca_cert> 
1

  client.crt: <client_cert> 
2

  client.key: <client_key> 
3

type: tls
1
서버 인증서를 검증할 Prometheus 컨테이너의 CA 인증서입니다.
2
서버와의 인증을 위한 클라이언트 인증서입니다.
3
클라이언트 키입니다.

다음 샘플에서는 mtls-bundle 이라는 TLS Secret 오브젝트를 사용하는 tlsConfig 원격 쓰기 인증 구성을 보여줍니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: user-workload-monitoring-config
  namespace: openshift-user-workload-monitoring
data:
  config.yaml: |
    prometheus:
      remoteWrite:
      - url: "https://remote-write-endpoint.example.com"
        tlsConfig:
          ca:
            secret:
              name: mtls-bundle 
1

              key: ca.crt 
2

          cert:
            secret:
              name: mtls-bundle 
3

              key: client.crt 
4

          keySecret:
            name: mtls-bundle 
5

            key: client.key 
6
1 3 5
TLS 인증 자격 증명이 포함된 해당 Secret 오브젝트의 이름입니다. keySecretSecret 오브젝트를 참조해야 하지만 cacertConfigMap 오브젝트를 참조할 수 있습니다.
2
끝점의 CA 인증서가 포함된 지정된 Secret 오브젝트의 키입니다.
4
끝점에 대한 클라이언트 인증서가 포함된 지정된 Secret 오브젝트의 키입니다.
6
클라이언트 키 secret이 포함된 지정된 Secret 오브젝트의 키입니다.
3.4.1.3. 원격 쓰기 대기열 구성 예

원격 쓰기에 queueConfig 오브젝트를 사용하여 원격 쓰기 대기열 매개변수를 조정할 수 있습니다. 다음 예제에서는 openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 프로젝트에 대한 모니터링을 위한 기본값이 있는 큐 매개변수를 보여줍니다.

기본값이 있는 원격 쓰기 매개변수 구성 예

apiVersion: v1
kind: ConfigMap
metadata:
  name: user-workload-monitoring-config
  namespace: openshift-user-workload-monitoring
data:
  config.yaml: |
    prometheus:
      remoteWrite:
      - url: "https://remote-write-endpoint.example.com"
        <endpoint_authentication_credentials>
        queueConfig:
          capacity: 10000 
1

          minShards: 1 
2

          maxShards: 50 
3

          maxSamplesPerSend: 2000 
4

          batchSendDeadline: 5s 
5

          minBackoff: 30ms 
6

          maxBackoff: 5s 
7

          retryOnRateLimit: false 
8

          sampleAgeLimit: 0s 
9

1
shard당 버퍼링을 큐에서 삭제하기 전에 버퍼링할 샘플 수입니다.
2
최소 shard 수입니다.
3
최대 shard 수입니다.
4
전송당 최대 샘플 수입니다.
5
샘플이 버퍼에서 대기할 최대 시간입니다.
6
실패한 요청을 다시 시도하기 전에 대기하는 초기 시간입니다. 시간은 maxbackoff 시간까지 각 재시도에 대해 두 배로 증가합니다.
7
실패한 요청을 다시 시도하기 전에 대기하는 최대 시간입니다.
8
원격 쓰기 스토리지에서 429 상태 코드를 수신한 후 요청을 재시도하려면 이 매개변수를 true 로 설정합니다.
9
sampleAgeLimit 제한보다 오래된 샘플은 큐에서 삭제됩니다. 값이 정의되지 않았거나 0s 로 설정하면 매개변수가 무시됩니다.
3.4.1.4. 원격 쓰기 메트릭 테이블

다음 표에는 원격 쓰기 구성 중 문제를 해결하는 데 도움이 되는 추가 설명과 함께 원격 쓰기 및 원격 쓰기 전파 지표가 포함되어 있습니다.

Expand
지표설명

prometheus_remote_storage_highest_timestamp_in_seconds

Prometheus가 모든 샘플의 WAL(Write-ahead log)에 저장된 최신 타임스탬프를 표시합니다.

prometheus_remote_storage_queue_highest_sent_timestamp_seconds

원격 쓰기 큐가 성공적으로 전송된 최신 타임스탬프를 표시합니다.

prometheus_remote_storage_samples_retried_total

원격 쓰기가 전송하지 못한 샘플 수와 원격 스토리지로 다시 보내야 했습니다. 이 메트릭의 안정적인 높은 비율은 네트워크 또는 원격 스토리지 끝점의 문제를 나타냅니다.

prometheus_remote_storage_shards

현재 각 원격 끝점에 대해 실행 중인 shard 수를 표시합니다.

prometheus_remote_storage_shards_desired

현재 쓰기 처리량과 전송된 샘플과 들어오는 비율에 따라 계산된 필요한 shard 수를 표시합니다.

prometheus_remote_storage_shards_max

현재 구성에 따라 최대 shard 수를 표시합니다.

prometheus_remote_storage_shards_min

현재 구성에 따라 최소 shard 수를 표시합니다.

prometheus_tsdb_wal_segment_current

Prometheus가 현재 새 데이터를 작성하고 있는 WAL 세그먼트 파일입니다.

prometheus_wal_watcher_current_segment

각 원격 쓰기 인스턴스가 현재 읽고 있는 WAL 세그먼트 파일입니다.

3.4.2. 메트릭에 대한 클러스터 ID 레이블 생성

openshift-user-workload-monitoring 네임스페이스의 user-workload-monitoring-config 구성 맵에서 원격 쓰기 스토리지에 대한 write_relabel 설정을 추가하여 메트릭에 대한 클러스터 ID 레이블을 생성할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • 원격 쓰기 스토리지가 구성되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml/prometheus/remoteWritewriteRelabelConfigs: 섹션에서 클러스터 ID 재레이블 구성 값을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            <endpoint_authentication_credentials>
            writeRelabelConfigs: 
    1
    
              - <relabel_config> 
    2
    1
    원격 끝점에 보낼 지표의 쓰기 재라벨 구성 목록을 추가합니다.
    2 2
    원격 쓰기 엔드포인트로 전송된 지표의 레이블 구성을 대체합니다.

    다음 샘플은 클러스터 ID 레이블 cluster_id 를 사용하여 메트릭을 전달하는 방법을 보여줍니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            writeRelabelConfigs:
            - sourceLabels:
              - __tmp_openshift_cluster_id__ 
    1
    
              targetLabel: cluster_id 
    2
    
              action: replace 
    3
    3
    처음에 시스템은 __tmp_openshift_cluster_id___라는 임시 클러스터 ID 소스 레이블을 적용합니다. 이 임시 레이블은 지정한 클러스터 ID 레이블 이름으로 교체됩니다.
    원격 쓰기 스토리지로 전송되는 지표의 클러스터 ID 레이블 이름을 지정합니다. 메트릭에 이미 존재하는 라벨 이름을 사용하는 경우 해당 값을 이 클러스터 ID 레이블의 이름으로 덮어씁니다. 레이블 이름의 경우 __tmp_openshift_cluster_id__ 를 사용하지 마십시오. 최종 레이블 재지정 단계에서 이 이름을 사용하는 라벨이 제거됩니다.
    replace write relabel 작업은 임시 레이블을 발신 지표의 target 레이블로 대체합니다. 이 작업은 기본값이며 작업이 지정되지 않은 경우 적용됩니다.
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성이 자동으로 적용됩니다.

3.4.3. 사용자 정의 프로젝트에 대한 메트릭 컬렉션 설정

ServiceMonitor 리소스를 생성하여 사용자 정의 프로젝트의 서비스 끝점에서 메트릭을 스크랩할 수 있습니다. 애플리케이션은 Prometheus 클라이언트 라이브러리를 사용하여 메트릭을 /metrics 표준 이름에 노출한다고 가정합니다.

이 섹션에서는 사용자 정의 프로젝트에 샘플 서비스를 배포한 후 서비스 모니터링 방법을 정의하는 ServiceMonitor 리소스를 만드는 방법에 대해 설명합니다.

3.4.3.1. 샘플 서비스 배포

사용자 정의 프로젝트에서 서비스 모니터링을 테스트하기 위해 샘플 서비스를 배포할 수 있습니다.

사전 요구 사항

  • cluster-admin 클러스터 역할의 사용자로 또는 네임스페이스에 대한 관리 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.

프로세스

  1. 서비스 구성에 대한 YAML 파일을 생성합니다. 이 예에서는 prometheus-example-app.yaml이라고 합니다.
  2. 파일에 다음 배포 및 서비스 구성 세부 정보를 추가합니다.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns1
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: prometheus-example-app
      name: prometheus-example-app
      namespace: ns1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: prometheus-example-app
      template:
        metadata:
          labels:
            app: prometheus-example-app
        spec:
          containers:
          - image: ghcr.io/rhobs/prometheus-example-app:0.4.2
            imagePullPolicy: IfNotPresent
            name: prometheus-example-app
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: prometheus-example-app
      name: prometheus-example-app
      namespace: ns1
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
        name: web
      selector:
        app: prometheus-example-app
      type: ClusterIP

    이 구성은 사용자 정의 ns1 프로젝트에 prometheus-example-app이라는 서비스를 배포합니다. 이 서비스는 사용자 정의 version 메트릭을 노출합니다.

  3. 클러스터에 구성을 적용합니다.

    $ oc apply -f prometheus-example-app.yaml

    서비스를 배포하는 데 시간이 다소 걸립니다.

  4. Pod가 실행 중인지 확인할 수 있습니다.

    $ oc -n ns1 get pod

    출력 예

    NAME                                      READY     STATUS    RESTARTS   AGE
    prometheus-example-app-7857545cb7-sbgwq   1/1       Running   0          81m

3.4.3.2. 서비스 모니터링 방법 지정

서비스에서 노출하는 메트릭을 사용하려면 /metrics 끝점에서 메트릭을 스크랩하도록 OpenShift Dedicated 모니터링을 구성해야 합니다. 서비스를 모니터링해야 하는 방법을 지정하는 ServiceMonitor(CRD) 또는 Pod를 모니터링해야 하는 방법을 지정하는 PodMonitor CRD를 사용하여 이 작업을 수행할 수 있습니다. 전자에는 Service 오브젝트가 필요하지만 후자에는 필요하지 않으며 Prometheus가 Pod에서 노출하는 메트릭 끝점에서 메트릭을 직접 스크랩할 수 있습니다.

다음 프로세스에서는 사용자 정의 프로젝트에서 서비스에 대한 ServiceMonitor 리소스를 생성하는 방법을 보여줍니다.

사전 요구 사항

  • dedicated-admin 역할 또는 monitoring-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 이 예제에서는 prometheus-example-app 샘플 서비스를 ns1 프로젝트에 배포했습니다.

    참고

    prometheus-example-app 샘플 서비스는 TLS 인증을 지원하지 않습니다.

프로세스

  1. example-app-service-monitor.yaml 이라는 새 YAML 구성 파일을 생성합니다.
  2. YAML 파일에 ServiceMonitor 리소스를 추가합니다. 다음 예제에서는 ns1 네임스페이스의 prometheus-example-app 서비스에서 노출하는 메트릭을 스크랩하기 위해 prometheus-example-monitor 라는 서비스 모니터를 생성합니다.

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: prometheus-example-monitor
      namespace: ns1 
    1
    
    spec:
      endpoints:
      - interval: 30s
        port: web 
    2
    
        scheme: http
      selector: 
    3
    
        matchLabels:
          app: prometheus-example-app
    1
    서비스가 실행되는 사용자 정의 네임스페이스를 지정합니다.
    2
    Prometheus에서 스크랩할 끝점 포트를 지정합니다.
    3
    메타데이터 레이블을 기반으로 서비스와 일치하도록 선택기를 구성합니다.
    참고

    사용자 정의 네임스페이스의 ServiceMonitor 리소스는 동일한 네임스페이스에서 서비스만 검색할 수 있습니다. 즉 ServiceMonitor 리소스의 namespaceSelector 필드는 항상 무시됩니다.

  3. 클러스터에 구성을 적용합니다.

    $ oc apply -f example-app-service-monitor.yaml

    ServiceMonitor 리소스를 배포하는 데 시간이 다소 걸립니다.

  4. ServiceMonitor 리소스가 실행 중인지 확인합니다.

    $ oc -n <namespace> get servicemonitor

    출력 예

    NAME                         AGE
    prometheus-example-monitor   81m

3.4.3.3. 서비스 끝점 인증 설정 예

ServiceMonitorPodMonitor CRD(사용자 정의 리소스 정의)를 사용하여 사용자 정의 프로젝트 모니터링에 대한 서비스 끝점에 대한 인증을 구성할 수 있습니다.

다음 샘플에서는 ServiceMonitor 리소스에 대한 다양한 인증 설정을 보여줍니다. 각 샘플에서는 인증 자격 증명 및 기타 관련 설정을 포함하는 해당 Secret 오브젝트를 구성하는 방법을 보여줍니다.

3.4.3.3.1. 전달자 토큰을 사용한 샘플 YAML 인증

다음 샘플에서는 ns1 네임스페이스에 example-bearer-auth 라는 Secret 오브젝트에 대한 전달자 토큰 설정을 보여줍니다.

전달자 토큰 시크릿의 예

apiVersion: v1
kind: Secret
metadata:
  name: example-bearer-auth
  namespace: ns1
stringData:
  token: <authentication_token> 
1

1
인증 토큰을 지정합니다.

다음 샘플은 ServiceMonitor CRD의 전달자 토큰 인증 설정을 보여줍니다. 예에서는 example-bearer-auth:이라는 Secret 오브젝트를 사용합니다.

전달자 토큰 인증 설정 예

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-example-monitor
  namespace: ns1
spec:
  endpoints:
  - authorization:
      credentials:
        key: token 
1

        name: example-bearer-auth 
2

    port: web
  selector:
    matchLabels:
      app: prometheus-example-app

1
지정된 Secret 오브젝트에 인증 토큰이 포함된 키입니다.
2
인증 인증 정보가 포함된 Secret 오브젝트의 이름입니다.
중요

전달자 토큰을 구성하는 데 bearerTokenFile 을 사용하지 마십시오. bearerTokenFile 구성을 사용하는 경우 ServiceMonitor 리소스가 거부됩니다.

3.4.3.3.2. 기본 인증을 위한 샘플 YAML

다음 샘플은 ns1 네임스페이스에 example-basic-auth 라는 Secret 오브젝트에 대한 기본 인증 설정을 보여줍니다.

기본 인증 시크릿의 예

apiVersion: v1
kind: Secret
metadata:
  name: example-basic-auth
  namespace: ns1
stringData:
  user: <basic_username> 
1

  password: <basic_password>  
2

1
인증에 사용할 사용자 이름을 지정합니다.
2
인증에 사용할 암호를 지정합니다.

다음 샘플에서는 ServiceMonitor CRD의 기본 인증 설정을 보여줍니다. 이 예제에서는 example-basic-auth:이라는 Secret 오브젝트를 사용합니다.

기본 인증 설정 예

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-example-monitor
  namespace: ns1
spec:
  endpoints:
  - basicAuth:
      username:
        key: user 
1

        name: example-basic-auth 
2

      password:
        key: password 
3

        name: example-basic-auth 
4

    port: web
  selector:
    matchLabels:
      app: prometheus-example-app

1
지정된 Secret 오브젝트에 사용자 이름이 포함된 키입니다.
2 4
기본 인증이 포함된 Secret 오브젝트의 이름입니다.
3
지정된 Secret 오브젝트에 암호가 포함된 키입니다.
3.4.3.3.3. OAuth 2.0을 사용한 샘플 YAML 인증

다음 샘플에서는 ns1 네임스페이스에 example-oauth2 라는 Secret 오브젝트에 대한 OAuth 2.0 설정을 보여줍니다.

OAuth 2.0 시크릿 예

apiVersion: v1
kind: Secret
metadata:
  name: example-oauth2
  namespace: ns1
stringData:
  id: <oauth2_id> 
1

  secret: <oauth2_secret> 
2

1
Oauth 2.0 ID를 지정합니다.
2
Oauth 2.0 시크릿을 지정합니다.

다음 샘플은 ServiceMonitor CRD의 OAuth 2.0 인증 설정을 보여줍니다. 예에서는 example-oauth2 라는 Secret 오브젝트를 사용합니다.

OAuth 2.0 인증 설정 예

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-example-monitor
  namespace: ns1
spec:
  endpoints:
  - oauth2:
      clientId:
        secret:
          key: id 
1

          name: example-oauth2 
2

      clientSecret:
        key: secret 
3

        name: example-oauth2 
4

      tokenUrl: https://example.com/oauth2/token 
5

    port: web
  selector:
    matchLabels:
      app: prometheus-example-app

1
지정된 Secret 오브젝트에 OAuth 2.0 ID가 포함된 키입니다.
2 4
OAuth 2.0 인증 정보가 포함된 Secret 오브젝트의 이름입니다.
3
지정된 Secret 오브젝트에 OAuth 2.0 시크릿이 포함된 키입니다.
5
지정된 clientIdclientSecret 을 사용하여 토큰을 가져오는 데 사용되는 URL입니다.

3.5. 사용자 워크로드 모니터링에 대한 경고 및 알림 구성

Prometheus에서 끝점 수신자로 경고를 라우팅하도록 로컬 또는 외부 Alertmanager 인스턴스를 구성할 수 있습니다. 모든 시계열 및 경고에 사용자 지정 레이블을 연결하여 유용한 메타데이터 정보를 추가할 수도 있습니다.

3.5.1. 외부 Alertmanager 인스턴스 구성

OpenShift Dedicated 모니터링 스택에는 Prometheus에서 경고를 라우팅하는 로컬 Alertmanager 인스턴스가 포함되어 있습니다.

외부 Alertmanager 인스턴스를 추가하여 사용자 정의 프로젝트에 대한 경고를 라우팅할 수 있습니다.

여러 클러스터에 대해 동일한 외부 Alertmanager 구성을 추가하고 각 클러스터에 대해 로컬 인스턴스를 비활성화하면 단일 외부 Alertmanager 인스턴스를 사용하여 여러 클러스터에 대한 경고 라우팅을 관리할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml/<component> 아래에 구성 세부 정보가 포함된 추가 AlertmanagerConfigs 섹션을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          additionalAlertmanagerConfigs:
          - <alertmanager_specification> 
    2
    2
    추가 Alertmanager 인스턴스의 경우 < alertmanager_specification >을 인증 및 기타 구성 세부 정보로 바꿉니다. 현재 지원되는 인증 방법은 베어러 토큰 (bearerToken) 및 클라이언트 TLS (tlsConfig)입니다.
    1
    지원되는 외부 Alertmanager 구성 요소인 prometheus 또는 thanosRuler 두 가지로 <component >를 바꿉니다.

    다음 샘플 구성 맵은 클라이언트 TLS 인증이 있는 전달자 토큰을 사용하여 Thanos Ruler에 대한 추가 Alertmanager를 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        thanosRuler:
          additionalAlertmanagerConfigs:
          - scheme: https
            pathPrefix: /
            timeout: "30s"
            apiVersion: v1
            bearerToken:
              name: alertmanager-bearer-token
              key: token
            tlsConfig:
              key:
                name: alertmanager-tls
                key: tls.key
              cert:
                name: alertmanager-tls
                key: tls.crt
              ca:
                name: alertmanager-tls
                key: tls.ca
            staticConfigs:
            - external-alertmanager1-remote.com
            - external-alertmanager1-remote2.com
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.

3.5.2. Alertmanager에 대한 보안 설정

OpenShift Dedicated 모니터링 스택에는 Prometheus에서 끝점 수신자로 경고를 라우팅하는 Alertmanager가 포함되어 있습니다. Alertmanager가 경고를 보낼 수 있도록 수신자로 인증해야 하는 경우 수신자에 대한 인증 자격 증명이 포함된 보안을 사용하도록 Alertmanager를 구성할 수 있습니다.

예를 들어, 보안을 사용하여 개인 CA(인증 기관)에서 발급한 인증서를 요구하는 끝점 수신자로 인증하도록 Alertmanager를 구성할 수 있습니다. 기본 HTTP 인증에 대한 암호 파일이 필요한 수신자로 인증하도록 Alertmanager를 구성할 수도 있습니다. 두 경우 모두 인증 세부 정보는 ConfigMap 오브젝트가 아닌 Secret 오브젝트에 포함됩니다.

3.5.2.1. Alertmanager 설정에 시크릿 추가

openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집하여 Alertmanager 구성에 보안을 추가할 수 있습니다.

구성 맵에 보안을 추가하면 보안이 Alertmanager Pod의 alertmanager 컨테이너에 /etc/alertmanager/secrets/<secret_name >에 볼륨으로 마운트됩니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • openshift-user-workload-monitoring 프로젝트의 Alertmanager에 구성할 시크릿을 생성했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 다음 구성을 사용하여 data/config.yaml/alertmanager 아래에 secrets: 섹션을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        alertmanager:
          secrets: 
    1
    
          - <secret_name_1> 
    2
    
          - <secret_name_2>
    1
    이 섹션에는 Alertmanager에 마운트할 시크릿이 포함되어 있습니다. 보안은 Alertmanager 오브젝트와 동일한 네임스페이스 내에 있어야 합니다.
    2
    수신자에 대한 인증 자격 증명이 포함된 Secret 오브젝트의 이름입니다. 보안을 여러 개 추가하는 경우 각각을 새 줄에 배치합니다.

    다음 샘플 구성 맵 설정은 test-secret-basic-authtest-secret-api-token 이라는 두 개의 Secret 오브젝트를 사용하도록 Alertmanager를 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        alertmanager:
          secrets:
          - test-secret-basic-auth
          - test-secret-api-token
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성이 자동으로 적용됩니다.

3.5.3. 시계열 및 경고에 추가 라벨 연결

Prometheus의 외부 라벨 기능을 사용하여 Prometheus를 떠나는 모든 시계열 및 경고에 사용자 정의 레이블을 연결할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml 아래에 모든 메트릭에 대해 추가하려는 레이블을 정의합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          externalLabels:
            <key>: <value> 
    1
    1
    < key>: <value >를 키-값 쌍으로 바꿉니다. 여기서 < key >는 새 레이블의 고유한 이름이며 < value >는 해당 값입니다.
    주의
    • prometheus 또는 prometheus_replica를 키 이름으로 사용하지 마십시오. 예약되어 있으며 덮어쓸 예정이기 때문입니다.
    • 클러스터를 키 이름으로 사용하지 마십시오. 이를 사용하면 개발자 대시보드에서 데이터를 볼 수 없는 문제가 발생할 수 있습니다.
    참고

    openshift-user-workload-monitoring 프로젝트에서 Prometheus는 메트릭을 처리하고 Thanos Ruler는 경고 및 레코딩 규칙을 처리합니다. user-workload-monitoring-config ConfigMap 오브젝트에서 prometheus에 대한 externalLabels를 설정하면 규칙에는 적용되지 않고 메트릭에 대한 외부 라벨만 구성됩니다.

    예를 들어 모든 시계열 및 경고에 리전 및 환경에 대한 메타데이터를 추가하려면 다음 예제를 사용합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          externalLabels:
            region: eu
            environment: prod
  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 재배포됩니다.

3.5.4. 경고 알림 구성

OpenShift Dedicated에서 dedicated-admin 사용자는 사용자 정의 프로젝트에 대해 별도의 Alertmanager 인스턴스를 사용하여 사용자 정의 프로젝트에 대한 경고 라우팅을 활성화할 수 있습니다.

alert-routing-edit 클러스터 역할이 있는 개발자 및 기타 사용자는 경고 수신자를 구성하여 사용자 정의 프로젝트에 대한 사용자 정의 경고 알림을 구성할 수 있습니다.

참고

사용자 정의 프로젝트에 대한 경고 라우팅의 다음 제한 사항을 검토하십시오.

  • 사용자 정의 경고 라우팅은 리소스가 정의된 네임스페이스로 범위가 지정됩니다. 예를 들어 네임스페이스 ns1 의 라우팅 구성은 동일한 네임스페이스의 PrometheusRules 리소스에만 적용됩니다.
  • 사용자 정의 모니터링에서 네임스페이스가 제외되면 네임스페이스의 AlertmanagerConfig 리소스가 Alertmanager 구성의 일부가 됩니다.
3.5.4.1. 사용자 정의 프로젝트에 대한 경고 라우팅 구성

alert-routing-edit 클러스터 역할이 지정된 관리자가 아닌 사용자인 경우 사용자 정의 프로젝트에 대한 경고 라우팅을 생성하거나 편집할 수 있습니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 경고 라우팅이 활성화되었습니다.
  • 경고 라우팅을 생성하려는 프로젝트에 대한 alert-routing-edit 클러스터 역할이 있는 사용자로 로그인했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 경고 라우팅을 위한 YAML 파일을 생성합니다. 이 절차의 예제에서는 example-app-alert-routing.yaml 이라는 파일을 사용합니다.
  2. AlertmanagerConfig YAML 정의를 파일에 추가합니다. 예를 들면 다음과 같습니다.

    apiVersion: monitoring.coreos.com/v1beta1
    kind: AlertmanagerConfig
    metadata:
      name: example-routing
      namespace: ns1
    spec:
      route:
        receiver: default
        groupBy: [job]
      receivers:
      - name: default
        webhookConfigs:
        - url: https://example.org/post
  3. 파일을 저장합니다.
  4. 클러스터에 리소스를 적용합니다.

    $ oc apply -f example-app-alert-routing.yaml

    구성이 Alertmanager Pod에 자동으로 적용됩니다.

사용자 정의 경고 라우팅 전용 Alertmanager의 별도의 인스턴스를 활성화한 경우 openshift-user-workload-monitoring 네임스페이스에서 alertmanager-user-workload 시크릿을 편집하여 인스턴스에서 알림을 보내는 위치와 방법을 사용자 지정할 수 있습니다.

참고

지원되는 업스트림 Alertmanager 버전의 모든 기능은 OpenShift Dedicated Alertmanager 구성에서도 지원됩니다. 지원되는 업스트림 Alertmanager 버전의 모든 구성 옵션을 확인하려면 Alertmanager 구성 (Prometheus 문서)을 참조하세요.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 현재 활성화된 Alertmanager 설정을 alertmanager.yaml 파일에 인쇄합니다.

    $ oc -n openshift-user-workload-monitoring get secret alertmanager-user-workload --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml
  2. alertmanager.yaml에서 설정을 편집합니다.

    global:
      http_config:
        proxy_from_environment: true 
    1
    
    route:
      receiver: Default
      group_by:
      - name: Default
      routes:
      - matchers:
        - "service = prometheus-example-monitor" 
    2
    
        receiver: <receiver> 
    3
    
    receivers:
    - name: Default
    - name: <receiver>
      <receiver_configuration> 
    4
    1
    HTTP 클러스터 전체 프록시를 구성한 경우 proxy_from_environment 매개변수를 true 로 설정하여 모든 경고 수신자에 대해 프록시를 활성화합니다.
    2
    경고와 일치하도록 라벨을 지정합니다. 이 예제에서는 service="prometheus-example-monitor" 라벨이 있는 모든 경고를 대상으로 합니다.
    3
    경고 그룹에 사용할 수신자 이름을 지정합니다.
    4
    수신자 구성을 지정합니다.
  3. 파일에 새 설정을 적용합니다.

    $ oc -n openshift-user-workload-monitoring create secret generic alertmanager-user-workload --from-file=alertmanager.yaml --dry-run=client -o=yaml |  oc -n openshift-user-workload-monitoring replace secret --filename=-

기본 플랫폼 경고 및 사용자 정의 경고에 대해 다양한 경고 수신자를 구성하여 다음 결과를 확인할 수 있습니다.

  • 모든 기본 플랫폼 경고는 이러한 경고를 담당하는 팀이 소유한 수신자에게 전송됩니다.
  • 모든 사용자 정의 경고가 다른 수신자에게 전송되므로 팀이 플랫폼 경고에만 집중할 수 있습니다.

Cluster Monitoring Operator가 모든 플랫폼 경고에 추가한 openshift_io_alert_source="platform" 라벨을 사용하여 이 작업을 수행할 수 있습니다.

  • 기본 플랫폼 경고에 맞게 openshift_io_alert_source="platform" matcher를 사용합니다.
  • 사용자 정의 경고와 일치하도록 openshift_io_alert_source!="platform" 또는 'openshift_io_alert_source=""' matcher를 사용합니다.
참고

사용자 정의 경고 전용 Alertmanager의 별도의 인스턴스를 활성화한 경우에는 이 구성이 적용되지 않습니다.

4장. 메트릭 액세스

4.1. 관리자로 메트릭에 액세스

메트릭에 액세스하여 클러스터 구성 요소 및 워크로드의 성능을 모니터링할 수 있습니다.

OpenShift Dedicated 메트릭 쿼리 브라우저를 사용하여 클러스터 및 사용자 정의 워크로드의 상태를 모니터링합니다. 쿼리 브라우저는 Prometheus Query Language(PromQL) 쿼리를 사용하여 플롯에 표시되는 지표를 검사합니다.

전용 관리자 또는 모든 프로젝트에 대한 보기 권한이 있는 사용자로 Metrics UI에서 모든 기본 OpenShift Dedicated 및 사용자 정의 프로젝트에 대한 메트릭에 액세스할 수 있습니다.

참고

전용 관리자만 OpenShift Dedicated 모니터링을 통해 제공되는 타사 UI에 액세스할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할 또는 모든 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 메트릭 클릭합니다.
  2. 하나 이상의 쿼리를 추가하려면 다음 작업을 수행합니다.

    Expand
    옵션설명

    기존 쿼리를 선택합니다.

    쿼리 선택 드롭다운 목록에서 기존 쿼리를 선택합니다.

    사용자 지정 쿼리를 생성합니다.

    표현식 필드에 PromQL(Prometheus Query Language) 쿼리를 추가합니다.

    PromQL 표현식을 입력하면 자동 완성 제안이 드롭다운 목록에 표시됩니다. 이러한 제안에는 함수, 메트릭, 라벨 및 시간 토큰이 포함됩니다. 키보드 화살표를 사용하여 제안된 항목 중 하나를 선택한 다음 Enter를 눌러 표현식에 항목을 추가합니다. 해당 항목에 대한 간략한 설명을 보려면 제안된 항목 위에 마우스 포인터를 이동합니다.

    여러 쿼리를 추가합니다.

    쿼리 추가를 클릭합니다.

    기존 쿼리를 복제합니다.

    쿼리 옆에 있는 옵션 메뉴 kebab 를 클릭한 다음 쿼리 중복 을 선택합니다.

    쿼리가 실행되지 않도록 비활성화합니다.

    쿼리 옆에 있는 옵션 메뉴 kebab 를 클릭하고 쿼리 비활성화 를 선택합니다.

  3. 생성한 쿼리를 실행하려면 쿼리 실행을 클릭합니다. 쿼리의 메트릭은 플롯에 시각화됩니다. 쿼리가 유효하지 않으면 UI에 오류 메시지가 표시됩니다.

    참고
    • 시계열 그래프를 그릴 때 대량의 데이터를 처리하는 쿼리는 시간 초과되거나 브라우저에 과부하가 걸릴 수 있습니다. 이를 방지하려면 그래프 숨기기 를 클릭하고 메트릭 테이블만 사용하여 쿼리를 조정합니다. 그런 다음 실행 가능한 쿼리를 검색한 후 플롯을 활성화하여 그래프를 그립니다.
    • 기본적으로 쿼리 테이블은 모든 메트릭과 해당 현재 값을 나열하는 확장된 보기를 표시합니다. 쿼리의 확장된 보기를 최소화하려면 ˅ 아래쪽 화살표를 클릭하세요.
  4. 선택 사항: 페이지 URL을 저장하여 나중에 이 쿼리 세트를 다시 사용합니다.
  5. 시각화된 메트릭을 살펴봅니다. 처음에 활성화된 모든 쿼리의 모든 메트릭이 플롯에 표시됩니다. 다음 작업을 수행하여 표시되는 메트릭을 선택합니다.

    Expand
    옵션설명

    쿼리에서 모든 메트릭을 숨깁니다.

    쿼리의 옵션 메뉴 kebab 를 클릭하고 모든 시리즈 숨기기 를 클릭합니다.

    특정 메트릭을 숨깁니다.

    쿼리 테이블로 이동하여 메트릭 이름 옆에 있는 색상이 지정된 사각형을 클릭합니다.

    플롯으로 확대하고 시간 범위를 변경합니다.

    다음 작업 중 하나를 수행합니다.

    • 수평으로 플롯을 클릭하고 드래그하여 시간 범위를 시각적으로 선택합니다.
    • 메뉴를 사용하여 시간 범위를 선택합니다.

    시간 범위를 재설정합니다.

    확대/축소 재설정 을 클릭합니다.

    특정 시점에서 모든 쿼리에 대한 출력을 표시합니다.

    관심 있는 시점에서 플롯 위로 마우스를 놓습니다. 쿼리 출력이 팝업 상자에 나타납니다.

    플롯을 숨깁니다.

    그래프 숨기기를 클릭합니다.

4.1.2. 메트릭 대상에 대한 자세한 정보 가져오기

OpenShift Dedicated 웹 콘솔을 사용하여 현재 스크랩을 대상으로 하는 끝점을 보고 검색하고 필터링할 수 있으므로 문제를 식별하고 해결하는 데 도움이 됩니다. 예를 들어 대상 끝점의 현재 상태를 보고 OpenShift Dedicated 모니터링이 대상 구성 요소에서 메트릭을 스크랩할 수 없는 경우를 확인할 수 있습니다.

Metrics 대상 페이지에는 사용자 정의 프로젝트의 대상이 표시됩니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 대상으로 이동합니다. 지표 대상 페이지가 열리고 메트릭에 대해 스크랩되는 모든 서비스 끝점 대상 목록이 표시됩니다.

    이 페이지에는 기본 OpenShift Dedicated 및 사용자 정의 프로젝트의 대상에 대한 세부 정보가 표시됩니다. 이 페이지에는 각 대상에 대한 다음 정보가 나열됩니다.

    • 스크랩되는 서비스 끝점 URL
    • 모니터링 중인 ServiceMonitor 리소스
    • 대상의 up 또는 down 상태
    • 네임스페이스
    • 마지막 스크랩 시간
    • 마지막 스크랩의 기간
  2. 선택 사항: 특정 대상을 찾으려면 다음 작업을 수행합니다.

    Expand
    옵션설명

    대상 상태를 상태 및 소스로 필터링합니다.

    필터 목록에서 필터 를 선택합니다.

    다음 필터링 옵션을 사용할 수 있습니다.

    • 상태 필터:

      • Up. 현재 대상이 활성화되어 있고 메트릭에 대해 적극적으로 스크랩되고 있습니다.
      • Down. 메트릭에 대한 대상이 현재 다운되어 있지 않습니다.
    • 소스 필터:

      • 플랫폼. 플랫폼 수준 대상은 AWS 프로젝트의 기본 Red Hat OpenShift Service에만 관련이 있습니다. 이러한 프로젝트는 AWS 기능에 핵심 Red Hat OpenShift Service를 제공합니다.
      • 사용자 사용자 대상은 사용자 정의 프로젝트와 관련이 있습니다. 이러한 프로젝트는 사용자가 생성하며 사용자 정의할 수 있습니다.

    이름 또는 레이블로 대상을 검색합니다.

    검색 상자 옆에 있는 텍스트 또는 레이블 필드에 검색어를 입력합니다.

    대상을 정렬합니다.

    Endpoint Status,Namespace,Last ScrapeScrape Duration 열 헤더 중 하나 이상을 클릭합니다.

  3. 대상의 끝점 열에서 URL을 클릭하여 대상 세부 정보 페이지로 이동합니다. 이 페이지에서는 다음 정보를 포함하여 대상에 대한 정보를 제공합니다.

    • 메트릭을 스크랩하는 끝점 URL
    • 대상의 현재 Up 또는 Down 상태
    • 네임스페이스에 대한 링크
    • ServiceMonitor 리소스 세부 정보 링크
    • 대상에 연결된 라벨
    • 지표에 대해 대상이 스크랩된 가장 최근의 시간

4.1.3. 클러스터 관리자로 모니터링 대시보드 검토

관리자는 핵심 OpenShift Dedicated 클러스터 구성 요소와 관련된 대시보드를 볼 수 있습니다.

중요

OpenShift Dedicated 4.19부터 웹 콘솔의 관점에 통합됩니다. Developer 모드는 기본적으로 더 이상 활성화되지 않습니다.

모든 사용자는 모든 OpenShift Dedicated 웹 콘솔 기능과 상호 작용할 수 있습니다. 그러나 클러스터 소유자가 아닌 경우 클러스터 소유자의 특정 기능에 액세스할 수 있는 권한을 요청해야 할 수 있습니다.

여전히 개발자 화면을 활성화할 수 있습니다. 웹 콘솔의 시작 창에서 콘솔 둘러보기, 클러스터 설정, 개발자 화면 활성화에 대한 빠른 시작 정보를 찾고, 링크를 따라 새 기능 및 기능을 탐색할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링대시보드 로 이동합니다.
  2. 대시보드 목록에서 대시보드를 선택합니다. etcdPrometheus 대시보드와 같은 일부 대시보드는 선택하면 추가 하위 메뉴가 생성됩니다.
  3. 선택 사항: 시간 범위 목록에서 그래프의 시간 범위를 선택합니다.

    • 사전 정의된 기간을 선택합니다.
    • 시간 범위 목록에서 사용자 지정 시간 범위를 클릭하여 사용자 지정 시간 범위를 설정합니다.

      1. 시작종료 날짜 및 시간을 입력하거나 선택합니다.
      2. 저장을 클릭하여 사용자 지정 시간 범위를 저장합니다.
  4. 선택 사항: 새로 고침 간격을 선택합니다.
  5. 대시보드 내에서 각각의 그래프로 마우스를 이동하여 특정 항목에 대한 세부 정보를 표시합니다.

4.2. 개발자로 메트릭 액세스

메트릭에 액세스하여 클러스터 워크로드의 성능을 모니터링할 수 있습니다.

OpenShift Dedicated 메트릭 쿼리 브라우저를 사용하여 사용자 정의 워크로드를 모니터링합니다. 쿼리 브라우저는 Prometheus Query Language(PromQL) 쿼리를 사용하여 플롯에 표시되는 지표를 검사합니다.

개발자는 메트릭을 쿼리할 때 프로젝트 이름을 지정해야 합니다. 선택한 프로젝트의 메트릭을 확인하는 데 필요한 권한이 있어야 합니다.

참고

개발자는 OpenShift Dedicated 모니터링과 함께 제공되는 타사 UI에 액세스할 수 없습니다.

사전 요구 사항

  • 개발자로 또는 메트릭을 확인하는 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 사용자 정의 프로젝트에 서비스를 배포했습니다.
  • 서비스에서 모니터링 방법을 정의하는 데 사용할 ServiceMonitor CRD(사용자 정의 리소스 정의(Custom Resource Definition))가 생성되었습니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 메트릭 클릭합니다.
  2. 하나 이상의 쿼리를 추가하려면 다음 작업을 수행합니다.

    Expand
    옵션설명

    기존 쿼리를 선택합니다.

    쿼리 선택 드롭다운 목록에서 기존 쿼리를 선택합니다.

    사용자 지정 쿼리를 생성합니다.

    표현식 필드에 PromQL(Prometheus Query Language) 쿼리를 추가합니다.

    PromQL 표현식을 입력하면 자동 완성 제안이 드롭다운 목록에 표시됩니다. 이러한 제안에는 함수, 메트릭, 라벨 및 시간 토큰이 포함됩니다. 키보드 화살표를 사용하여 제안된 항목 중 하나를 선택한 다음 Enter를 눌러 표현식에 항목을 추가합니다. 해당 항목에 대한 간략한 설명을 보려면 제안된 항목 위에 마우스 포인터를 이동합니다.

    여러 쿼리를 추가합니다.

    쿼리 추가를 클릭합니다.

    기존 쿼리를 복제합니다.

    쿼리 옆에 있는 옵션 메뉴 kebab 를 클릭한 다음 쿼리 중복 을 선택합니다.

    쿼리가 실행되지 않도록 비활성화합니다.

    쿼리 옆에 있는 옵션 메뉴 kebab 를 클릭하고 쿼리 비활성화 를 선택합니다.

  3. 생성한 쿼리를 실행하려면 쿼리 실행을 클릭합니다. 쿼리의 메트릭은 플롯에 시각화됩니다. 쿼리가 유효하지 않으면 UI에 오류 메시지가 표시됩니다.

    참고
    • 시계열 그래프를 그릴 때 대량의 데이터를 처리하는 쿼리는 시간 초과되거나 브라우저에 과부하가 걸릴 수 있습니다. 이를 방지하려면 그래프 숨기기 를 클릭하고 메트릭 테이블만 사용하여 쿼리를 조정합니다. 그런 다음 실행 가능한 쿼리를 검색한 후 플롯을 활성화하여 그래프를 그립니다.
    • 기본적으로 쿼리 테이블은 모든 메트릭과 해당 현재 값을 나열하는 확장된 보기를 표시합니다. 쿼리의 확장된 보기를 최소화하려면 ˅ 아래쪽 화살표를 클릭하세요.
  4. 선택 사항: 페이지 URL을 저장하여 나중에 이 쿼리 세트를 다시 사용합니다.
  5. 시각화된 메트릭을 살펴봅니다. 처음에 활성화된 모든 쿼리의 모든 메트릭이 플롯에 표시됩니다. 다음 작업을 수행하여 표시되는 메트릭을 선택합니다.

    Expand
    옵션설명

    쿼리에서 모든 메트릭을 숨깁니다.

    쿼리의 옵션 메뉴 kebab 를 클릭하고 모든 시리즈 숨기기 를 클릭합니다.

    특정 메트릭을 숨깁니다.

    쿼리 테이블로 이동하여 메트릭 이름 옆에 있는 색상이 지정된 사각형을 클릭합니다.

    플롯으로 확대하고 시간 범위를 변경합니다.

    다음 작업 중 하나를 수행합니다.

    • 수평으로 플롯을 클릭하고 드래그하여 시간 범위를 시각적으로 선택합니다.
    • 메뉴를 사용하여 시간 범위를 선택합니다.

    시간 범위를 재설정합니다.

    확대/축소 재설정 을 클릭합니다.

    특정 시점에서 모든 쿼리에 대한 출력을 표시합니다.

    관심 있는 시점에서 플롯 위로 마우스를 놓습니다. 쿼리 출력이 팝업 상자에 나타납니다.

    플롯을 숨깁니다.

    그래프 숨기기를 클릭합니다.

4.2.2. 개발자로 모니터링 대시보드 검토

개발자는 권한이 있는 프로젝트와 관련된 대시보드를 볼 수 있습니다.

중요

OpenShift Dedicated 4.19부터 웹 콘솔의 관점에 통합됩니다. Developer 모드는 기본적으로 더 이상 활성화되지 않습니다.

모든 사용자는 모든 OpenShift Dedicated 웹 콘솔 기능과 상호 작용할 수 있습니다. 그러나 클러스터 소유자가 아닌 경우 클러스터 소유자의 특정 기능에 액세스할 수 있는 권한을 요청해야 할 수 있습니다.

여전히 개발자 화면을 활성화할 수 있습니다. 웹 콘솔의 시작 창에서 콘솔 둘러보기, 클러스터 설정, 개발자 화면 활성화에 대한 빠른 시작 정보를 찾고, 링크를 따라 새 기능 및 기능을 탐색할 수 있습니다.

사전 요구 사항

프로세스

  1. OpenShift Dedicated 웹 콘솔의 개발자 화면에서 모니터링 을 클릭하고 대시보드 탭으로 이동합니다.
  2. 프로젝트: 드롭다운 목록에서 프로젝트를 선택합니다.
  3. 대시보드 드롭다운 목록에서 대시보드 를 선택하여 필터링된 지표를 확인합니다.
  4. 선택 사항: 시간 범위 목록에서 그래프의 시간 범위를 선택합니다.

    • 사전 정의된 기간을 선택합니다.
    • 시간 범위 목록에서 사용자 지정 시간 범위를 클릭하여 사용자 지정 시간 범위를 설정합니다.

      1. 시작종료 날짜 및 시간을 입력하거나 선택합니다.
      2. 저장을 클릭하여 사용자 지정 시간 범위를 저장합니다.
  5. 선택 사항: 새로 고침 간격을 선택합니다.
  6. 대시보드 내에서 각각의 그래프로 마우스를 이동하여 특정 항목에 대한 세부 정보를 표시합니다.

4.3. CLI를 사용하여 모니터링 API에 액세스

OpenShift Dedicated에서는 CLI(명령줄 인터페이스)에서 일부 모니터링 구성 요소에 대한 웹 서비스 API에 액세스할 수 있습니다.

중요

특정 상황에서 API 끝점에 액세스하면 특히 끝점을 사용하여 대량의 메트릭 데이터를 검색, 전송 또는 쿼리하는 경우 클러스터의 성능과 확장성이 저하될 수 있습니다.

이러한 문제를 방지하려면 다음 권장 사항을 고려하십시오.

  • 끝점을 자주 쿼리하지 마십시오. 쿼리를 30초마다 최대 1개로 제한합니다.
  • Prometheus의 /federate 엔드포인트를 통해 모든 지표 데이터를 검색하지 마십시오. 제한된 집계 데이터 세트를 검색하려는 경우에만 끝점을 쿼리합니다. 예를 들어 각 요청에 대해 1,000개 미만의 샘플을 검색하면 성능 저하의 위험을 최소화할 수 있습니다.

4.3.1. 모니터링 웹 서비스 API 액세스 정보

명령줄을 사용하여 모니터링 스택과 상호 작용하려면 Prometheus, Alertmanager, Thanos Ruler, Thanos Querier의 웹 서비스 API 끝점에 액세스할 수 있습니다. 직접 API 액세스에는 전달자 토큰 인증 및 올바른 네임스페이스 권한이 필요합니다.

중요

Thanos Ruler 및 Thanos Querier 서비스 API에 액세스하려면 요청 계정에 네임스페이스 리소스에 대한 권한 get이 있어야 하며, 이는 계정에 cluster-monitoring-view 클러스터 역할을 부여하여 수행할 수 있습니다.

모니터링 구성 요소에 대한 웹 서비스 API 끝점에 액세스하는 경우 다음 제한 사항을 유의하십시오.

  • 전달자 토큰 인증을 사용하여 API 끝점에 액세스할 수 있습니다.
  • 경로의 /api 경로의 끝점에만 액세스할 수 있습니다. 웹 브라우저에서 API 끝점에 액세스하려고 하면 애플리케이션을 사용할 수 없는 오류가 발생합니다. 웹 브라우저에서 모니터링 기능에 액세스하려면 OpenShift Dedicated 웹 콘솔을 사용하여 모니터링 대시보드를 검토합니다.

4.3.2. 모니터링 웹 서비스 API 액세스

다음 예제에서는 코어 플랫폼 모니터링에 사용된 Alertmanager 서비스의 서비스 API 수신자를 쿼리하는 방법을 보여줍니다. 유사한 방법을 사용하여 코어 플랫폼 Prometheus의 prometheus-k8s 서비스와 Thanos Ruler의 thanos-ruler 서비스에 액세스할 수 있습니다.

사전 요구 사항

  • openshift-monitoring 네임스페이스에서 monitoring-alertmanager-edit 역할에 바인딩된 계정에 로그인되어 있습니다.
  • Alertmanager API 경로를 가져올 수 있는 권한이 있는 계정에 로그인되어 있습니다.

    참고

    계정에 Alertmanager API 경로를 가져올 수 있는 권한이 없는 경우 클러스터 관리자가 경로에 대한 URL을 제공할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 인증 토큰을 추출합니다.

    $ TOKEN=$(oc whoami -t)
  2. 다음 명령을 실행하여 alertmanager-main API 경로 URL을 추출합니다.

    $ HOST=$(oc -n openshift-monitoring get route alertmanager-main -ojsonpath='{.status.ingress[].host}')
  3. 다음 명령을 실행하여 Alertmanager의 서비스 API 수신자를 쿼리합니다.

    $ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v2/receivers"

4.3.3. Prometheus의 페더레이션 엔드포인트를 사용하여 메트릭 쿼리

Prometheus의 페더레이션 엔드포인트를 사용하여 클러스터 외부의 네트워크 위치에서 플랫폼 및 사용자 정의 지표를 스크랩할 수 있습니다. 이렇게 하려면 OpenShift Dedicated 경로를 통해 클러스터의 Prometheus /federate 엔드포인트에 액세스합니다.

중요

메트릭 데이터 검색 지연은 페더레이션을 사용할 때 발생합니다. 이 지연은 스크랩된 메트릭의 정확성 및 타임라인에 영향을 미칠 수 있습니다.

페더레이션 엔드포인트를 사용하면 특히 페더레이션 엔드포인트를 사용하여 대량의 메트릭 데이터를 검색하는 경우 클러스터의 성능과 확장성이 저하될 수 있습니다. 이러한 문제를 방지하려면 다음 권장 사항을 따르십시오.

  • Prometheus의 페더레이션 엔드포인트를 통해 모든 메트릭 데이터를 검색하지 마십시오. 제한된 집계 데이터 세트를 검색하려는 경우에만 쿼리합니다. 예를 들어 각 요청에 대해 1,000개 미만의 샘플을 검색하면 성능 저하의 위험을 최소화할 수 있습니다.
  • Prometheus의 페더레이션 엔드포인트를 자주 쿼리하지 마십시오. 쿼리를 30초마다 최대 1개로 제한합니다.

클러스터 외부에서 대량의 데이터를 전달해야 하는 경우 대신 원격 쓰기를 사용합니다. 자세한 내용은 원격 쓰기 스토리지 구성 섹션을 참조하십시오.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-monitoring-view 클러스터 역할의 사용자로 클러스터에 액세스하거나 네임스페이스 리소스에 대한 get 권한을 사용하여 전달자 토큰을 가져올 수 있습니다.

    참고

    전달자 토큰 인증을 사용하여 Prometheus 페더 엔드포인트에 액세스할 수 있습니다.

  • Prometheus 페더레이션 경로를 가져올 수 있는 권한이 있는 계정에 로그인되어 있습니다.

    참고

    계정에 Prometheus 페더레이션 경로를 가져올 수 있는 권한이 없는 경우 클러스터 관리자가 경로에 대한 URL을 제공할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 전달자 토큰을 검색합니다.

    $ TOKEN=$(oc whoami -t)
  2. 다음 명령을 실행하여 Prometheus 페더레이션 경로 URL을 가져옵니다.

    $ HOST=$(oc -n openshift-monitoring get route prometheus-k8s-federate -ojsonpath='{.status.ingress[].host}')
  3. /federate 경로에서 메트릭을 쿼리합니다. 다음 예제 명령은 메트릭 을 쿼리합니다.

    $ curl -G -k -H "Authorization: Bearer $TOKEN" https://$HOST/federate --data-urlencode 'match[]=up'

    출력 예

    # TYPE up untyped
    up{apiserver="kube-apiserver",endpoint="https",instance="10.0.143.148:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035322214
    up{apiserver="kube-apiserver",endpoint="https",instance="10.0.148.166:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035338597
    up{apiserver="kube-apiserver",endpoint="https",instance="10.0.173.16:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035343834
    ...

사용자 정의 프로젝트를 사용하여 자체 서비스를 모니터링할 때 클러스터 외부에서 Prometheus 지표를 쿼리할 수 있습니다. thanos-querier 경로를 사용하여 클러스터 외부에서 이 데이터에 액세스합니다.

이 액세스는 인증에 Bearer 토큰만 사용할 수 있습니다.

사전 요구 사항

  • "사용자 정의 프로젝트에 대한 모니터링 활성화" 절차에 따라 자체 서비스를 배포했습니다.
  • Thanos Querier API에 액세스할 수 있는 권한을 제공하는 cluster-monitoring-view 클러스터 역할을 사용하여 계정에 로그인되어 있습니다.
  • Thanos Querier API 경로를 가져올 수 있는 권한이 있는 계정에 로그인되어 있습니다.

    참고

    Thanos Querier API 경로를 가져올 수 있는 권한이 계정에 없는 경우 클러스터 관리자가 경로에 URL을 제공할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 Prometheus에 연결할 인증 토큰을 추출합니다.

    $ TOKEN=$(oc whoami -t)
  2. 다음 명령을 실행하여 thanos-querier API 경로 URL을 추출합니다.

    $ HOST=$(oc -n openshift-monitoring get route thanos-querier -ojsonpath='{.status.ingress[].host}')
  3. 다음 명령을 사용하여 네임스페이스를 서비스가 실행 중인 네임스페이스로 설정합니다.

    $ NAMESPACE=ns1
  4. 다음 명령을 실행하여 명령줄에서 자체 서비스의 메트릭을 쿼리합니다.

    $ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v1/query?" --data-urlencode "query=up{namespace='$NAMESPACE'}"

    출력에는 Prometheus가 스크랩하는 각 애플리케이션 Pod의 상태가 표시됩니다.

    포맷된 예제 출력

    {
      "status": "success",
      "data": {
        "resultType": "vector",
        "result": [
          {
            "metric": {
              "__name__": "up",
              "endpoint": "web",
              "instance": "10.129.0.46:8080",
              "job": "prometheus-example-app",
              "namespace": "ns1",
              "pod": "prometheus-example-app-68d47c4fb6-jztp2",
              "service": "prometheus-example-app"
            },
            "value": [
              1591881154.748,
              "1"
            ]
          }
        ],
      }
    }

    참고
    • 포맷된 예제 출력에서는 jq 와 같은 필터링 툴을 사용하여 형식이 지정된 JSON을 제공합니다. jq 사용에 대한 자세한 내용은 jq Manual (jq 문서)을 참조하세요.
    • 이 명령은 Thanos Querier 서비스의 즉각적인 쿼리 끝점을 요청하여 한 번에 선택기를 평가합니다.

4.3.5. Cluster Monitoring Operator에 대한 리소스 참조

이 문서에서는 CCMO(Cluster Monitoring Operator)에서 배포 및 관리하는 다음 리소스에 대해 설명합니다.

메트릭 데이터를 검색, 전송 또는 쿼리하도록 API 끝점 연결을 구성하려면 이 정보를 사용합니다.

중요

특정 상황에서 끝점 액세스는 특히 끝점을 사용하여 대량의 메트릭 데이터를 검색, 전송 또는 쿼리하는 경우 클러스터의 성능과 확장성을 저하시킬 수 있습니다.

이러한 문제를 방지하려면 다음 권장 사항을 따르십시오.

  • 끝점을 자주 쿼리하지 마십시오. 쿼리를 30초마다 최대 1개로 제한합니다.
  • /federate 엔드포인트를 통해 모든 메트릭 데이터를 검색하지 마십시오. 제한된 집계 데이터 세트를 검색하려는 경우에만 쿼리합니다. 예를 들어 각 요청에 대해 1,000개 미만의 샘플을 검색하면 성능 저하의 위험을 최소화할 수 있습니다.
4.3.5.1. CMO 경로 리소스
4.3.5.1.1. openshift-monitoring/alertmanager-main

라우터를 통해 alertmanager-main 서비스의 /api 엔드포인트를 노출합니다.

4.3.5.1.2. openshift-monitoring/prometheus-k8s

라우터를 통해 prometheus-k8s 서비스의 /api 끝점을 노출합니다.

4.3.5.1.3. openshift-monitoring/prometheus-k8s-federate

라우터를 통해 prometheus-k8s 서비스의 /federate 엔드포인트를 노출합니다.

4.3.5.1.4. openshift-user-workload-monitoring/federate

라우터를 통해 prometheus-user-workload 서비스의 /federate 엔드포인트를 노출합니다.

4.3.5.1.5. openshift-monitoring/thanos-querier

라우터를 통해 thanos-querier 서비스의 /api 엔드포인트를 노출합니다.

4.3.5.1.6. openshift-user-workload-monitoring/thanos-ruler

라우터를 통해 thanos-ruler 서비스의 /api 엔드포인트를 노출합니다.

4.3.5.2. CMO 서비스 리소스
4.3.5.2.1. openshift-monitoring/prometheus-operator-admission-webhook

포트 8443에서 PrometheusRulesAlertmanagerConfig 사용자 정의 리소스를 검증하는 승인 Webhook 서비스를 노출합니다.

4.3.5.2.2. openshift-user-workload-monitoring/alertmanager-user-workload

다음 포트의 클러스터에 사용자 정의 Alertmanager 웹 서버를 노출합니다.

  • 포트 9095는 Alertmanager 엔드 포인트에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 openshift-user-workload-monitoring 프로젝트의 monitoring-alertmanager-api-reader 역할(읽기 전용 작업용) 또는 monitoring-alertmanager-api-writer 역할에 바인딩해야 합니다.
  • 포트 9092는 지정된 프로젝트로 제한된 Alertmanager 끝점에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 monitoring-rules-edit 클러스터 역할 또는 프로젝트의 monitoring-edit 클러스터 역할에 바인딩해야 합니다.
  • 포트 9097은 /metrics 엔드포인트에만 액세스할 수 있습니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
4.3.5.2.3. openshift-monitoring/alertmanager-main

다음 포트에서 클러스터 내에 Alertmanager 웹 서버를 노출합니다.

  • 포트 9094는 모든 Alertmanager 엔드 포인트에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 openshift-monitoring 프로젝트의 monitoring-alertmanager-view 역할(읽기 전용 작업용) 또는 monitoring-alertmanager-edit 역할에 바인딩해야 합니다.

    monitoring-alertmanager-view 권한의 예

    다음 예제에서는 monitoring-alertmanager-view 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-alertmanager-web-monitoring-alertmanager-view
      $ oc create serviceaccount am-client --namespace=test-alertmanager-web-monitoring-alertmanager-view
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-alertmanager-web-monitoring-alertmanager-view \
        --namespace=openshift-monitoring \
        --role=monitoring-alertmanager-view \
        --serviceaccount=test-alertmanager-web-monitoring-alertmanager-view:am-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token am-client --namespace=test-alertmanager-web-monitoring-alertmanager-view)
    4. Alertmanager 끝점에 외부에서 액세스합니다.

      $ ROUTE=$(oc get route alertmanager-main --namespace=openshift-monitoring -ojsonpath={.spec.host})
      $ curl -k -H "Authorization: Bearer $TOKEN" "https://$ROUTE/api/v2/alerts?filter=alertname=Watchdog"
    5. 클러스터 내에서 Alertmanager 끝점에 액세스합니다.

      $ curl -k -H "Authorization: Bearer $TOKEN" "https://alertmanager-main.openshift-monitoring:9094/api/v2/alerts?filter=alertname=Watchdog"
    monitoring-alertmanager-edit 권한의 예

    다음 예제에서는 monitoring-alertmanager-edit 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-alertmanager-web-monitoring-alertmanager-edit
      $ oc create serviceaccount am-client --namespace=test-alertmanager-web-monitoring-alertmanager-edit
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-alertmanager-web-monitoring-alertmanager-edit \
        --namespace=openshift-monitoring \
        --role=monitoring-alertmanager-edit \
        --serviceaccount=test-alertmanager-web-monitoring-alertmanager-edit:am-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token am-client --namespace=test-alertmanager-web-monitoring-alertmanager-edit)
    4. Alertmanager 끝점에 외부에서 액세스합니다.

      $ ROUTE=$(oc get route alertmanager-main --namespace=openshift-monitoring -ojsonpath={.spec.host})
      $ curl -k -X POST  "https://$ROUTE/api/v2/silences" \
        -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
        -d '{
          "matchers": [
            {
              "name": "alertname",
              "value": "MyTestAlert1",
              "isRegex": false
            }
          ],
          "startsAt": "2044-01-01T00:00:00Z",
          "endsAt": "2044-01-01T00:00:01Z",
          "createdBy": "test-alertmanager-web-monitoring-alertmanager-edit/am-client",
          "comment": "Silence test"
        }'
    5. 클러스터 내에서 Alertmanager 끝점에 액세스합니다.

      $ curl -k -X POST  "https://alertmanager-main.openshift-monitoring:9094/api/v2/silences" \
        -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
        -d '{
          "matchers": [
            {
              "name": "alertname",
              "value": "MyTestAlert2",
              "isRegex": false
            }
          ],
          "startsAt": "2044-01-01T00:00:00Z",
          "endsAt": "2044-01-01T00:00:01Z",
          "createdBy": "test-alertmanager-web-monitoring-alertmanager-edit/am-client",
          "comment": "Silence test"
        }'
  • 포트 9092는 지정된 프로젝트로 제한된 Alertmanager 끝점에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 monitoring-rules-edit 클러스터 역할 또는 프로젝트의 monitoring-edit 클러스터 역할에 바인딩해야 합니다.

    monitoring-rules-edit 권한 예

    다음 예제에서는 monitoring-rules-edit 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-alertmanager-tenancy-monitoring-rules-edit
      $ oc create serviceaccount am-client --namespace=test-alertmanager-tenancy-monitoring-rules-edit
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-alertmanager-tenancy-monitoring-rules-edit \
        --namespace=test-alertmanager-tenancy-monitoring-rules-edit \
        --clusterrole=monitoring-rules-edit \
        --serviceaccount=test-alertmanager-tenancy-monitoring-rules-edit:am-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token am-client --namespace=test-alertmanager-tenancy-monitoring-rules-edit)
    4. 클러스터 내에서 Alertmanager 끝점에 액세스합니다. 포트는 기본적으로 외부에 노출되지 않습니다.

      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://alertmanager-main.openshift-monitoring:9092/api/v2/alerts?namespace=test-alertmanager-tenancy-monitoring-rules-edit"
      $ curl -k -X POST -f "https://alertmanager-main.openshift-monitoring:9092/api/v2/silences?namespace=test-alertmanager-tenancy-monitoring-rules-edit" \
        -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
        -d '{
          "matchers": [
            {
              "name": "alertname",
              "value": "MyTestAlert",
              "isRegex": false
            }
          ],
          "startsAt": "2044-01-01T00:00:00Z",
          "endsAt": "2044-01-01T00:00:01Z",
          "createdBy": "test-alertmanager-tenancy-monitoring-rules-edit/am-client",
          "comment": "Silence test"
        }'
    monitoring-edit 권한 예

    다음 예제에서는 monitoring-edit 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-alertmanager-tenancy-monitoring-edit
      $ oc create serviceaccount am-client --namespace=test-alertmanager-tenancy-monitoring-edit
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-alertmanager-tenancy-monitoring-edit \
        --namespace=test-alertmanager-tenancy-monitoring-edit \
        --clusterrole=monitoring-edit \
        --serviceaccount=test-alertmanager-tenancy-monitoring-edit:am-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token am-client --namespace=test-alertmanager-tenancy-monitoring-edit)
    4. 클러스터 내에서 Alertmanager 끝점에 액세스합니다. 포트는 기본적으로 외부에 노출되지 않습니다.

      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://alertmanager-main.openshift-monitoring:9092/api/v2/alerts?namespace=test-alertmanager-tenancy-monitoring-edit"
      $ curl -k -X POST -f "https://alertmanager-main.openshift-monitoring:9092/api/v2/silences?namespace=test-alertmanager-tenancy-monitoring-edit" \
        -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
        -d '{
          "matchers": [
            {
              "name": "alertname",
              "value": "MyTestAlert",
              "isRegex": false
            }
          ],
          "startsAt": "2044-01-01T00:00:00Z",
          "endsAt": "2044-01-01T00:00:01Z",
          "createdBy": "test-alertmanager-tenancy-monitoring-edit/am-client",
          "comment": "Silence test"
        }'
  • 포트 9097은 /metrics 엔드포인트에만 액세스할 수 있습니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
4.3.5.2.4. openshift-monitoring/kube-state-metrics

다음 포트의 클러스터 내에 kube-state-metrics /metrics 끝점을 노출합니다.

  • 포트 8443은 Kubernetes 리소스 메트릭에 대한 액세스를 제공합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
  • 포트 9443은 내부 kube-state-metrics 메트릭에 대한 액세스를 제공합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
4.3.5.2.5. openshift-monitoring/metrics-server

포트 443에 metrics-server 웹 서버를 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.6. openshift-monitoring/monitoring-plugin

포트 9443에 모니터링 플러그인 서비스를 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.7. openshift-monitoring/node-exporter

포트 9100에 /metrics 엔드포인트를 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.8. openshift-monitoring/openshift-state-metrics

다음 포트의 클러스터 내에 openshift-state-metrics /metrics 끝점을 노출합니다.

  • 포트 8443은 OpenShift 리소스 메트릭에 대한 액세스를 제공합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
  • 포트 9443은 내부 openshift-state-metrics 지표에 대한 액세스를 제공합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
4.3.5.2.9. openshift-monitoring/prometheus-k8s

다음 포트의 클러스터 내에 Prometheus 웹 서버를 노출합니다.

  • 포트 9091은 모든 Prometheus 끝점에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 openshift-monitoring 프로젝트에서 cluster-monitoring-view 클러스터 역할 또는 cluster-monitoring-metrics-api 클러스터 역할에 바인딩해야 합니다.

    cluster-monitoring-view 권한의 예

    다음 예제에서는 cluster -monitoring-view 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-prometheus-web-cluster-monitoring-view
      $ oc create serviceaccount prom-client --namespace=test-prometheus-web-cluster-monitoring-view
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-prometheus-web-cluster-monitoring-view \
        --namespace=openshift-monitoring \
        --clusterrole=cluster-monitoring-view \
        --serviceaccount=test-prometheus-web-cluster-monitoring-view:prom-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token prom-client --namespace=test-prometheus-web-cluster-monitoring-view)
    4. Prometheus 끝점에 외부에서 액세스합니다.

      $ ROUTE=$(oc get route prometheus-k8s --namespace=openshift-monitoring -ojsonpath={.spec.host})
      $ curl -k -H "Authorization: Bearer $TOKEN" "https://$ROUTE/api/v1/query?query=up"
    5. 클러스터 내에서 Prometheus 끝점에 액세스합니다.

      $ curl -k -H "Authorization: Bearer $TOKEN" "https://prometheus-k8s.openshift-monitoring:9091/api/v1/query?query=up"
    cluster-monitoring-metrics-api 권한의 예

    다음 예제에서는 cluster-monitoring-metrics-api 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-prometheus-web-cluster-monitoring-metrics-api
      $ oc create serviceaccount prom-client --namespace=test-prometheus-web-cluster-monitoring-metrics-api
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-prometheus-web-cluster-monitoring-metrics-api \
        --namespace=openshift-monitoring \
        --role=cluster-monitoring-metrics-api  \
        --serviceaccount=test-prometheus-web-cluster-monitoring-metrics-api:prom-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token prom-client --namespace=test-prometheus-web-cluster-monitoring-metrics-api)
    4. Prometheus 끝점에 외부에서 액세스합니다.

      $ ROUTE=$(oc get route prometheus-k8s --namespace=openshift-monitoring -ojsonpath={.spec.host})
      $ curl -k -H "Authorization: Bearer $TOKEN" "https://$ROUTE/api/v1/query?query=up"
    5. 클러스터 내에서 Prometheus 끝점에 액세스합니다.

      $ curl -k -H "Authorization: Bearer $TOKEN" "https://prometheus-k8s.openshift-monitoring:9091/api/v1/query?query=up"
  • 포트 9092는 /metrics/federate 엔드포인트에만 액세스할 수 있습니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
4.3.5.2.10. openshift-user-workload-monitoring/prometheus-operator

포트 8443에 /metrics 엔드포인트를 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.11. openshift-monitoring/prometheus-operator

포트 8443에 /metrics 엔드포인트를 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.12. openshift-user-workload-monitoring/prometheus-user-workload

다음 포트의 클러스터 내에 Prometheus 웹 서버를 노출합니다.

  • 포트 9091은 /metrics 엔드포인트에만 액세스할 수 있습니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
  • 포트 9092는 /federate 엔드포인트에만 액세스할 수 있습니다. 액세스 권한을 부여하려면 사용자를 cluster-monitoring-view 클러스터 역할에 바인딩해야 합니다.

또한 Thanos 사이드카 웹 서버의 /metrics 엔드포인트를 포트 10902에 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.13. openshift-monitoring/telemeter-client

포트 8443에 /metrics 엔드포인트를 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.14. openshift-monitoring/thanos-querier

다음 포트에서 Thanos Querier 웹 서버를 클러스터에 노출합니다.

  • 포트 9091은 모든 Thanos Querier 엔드포인트에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 openshift-monitoring 프로젝트에서 cluster-monitoring-view 클러스터 역할 또는 cluster-monitoring-metrics-api 클러스터 역할에 바인딩해야 합니다.

    cluster-monitoring-view 권한의 예

    다음 예제에서는 cluster -monitoring-view 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-thanos-querier-web-cluster-monitoring-view
      $ oc create serviceaccount thanos-client --namespace=test-thanos-querier-web-cluster-monitoring-view
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-thanos-querier-web-cluster-monitoring-view \
        --namespace=openshift-monitoring \
        --clusterrole=cluster-monitoring-view \
        --serviceaccount=test-thanos-querier-web-cluster-monitoring-view:thanos-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token thanos-client --namespace=test-thanos-querier-web-cluster-monitoring-view)
    4. Thanos Querier 엔드포인트에 외부에서 액세스합니다.

      $ ROUTE=$(oc get route thanos-querier --namespace=openshift-monitoring -ojsonpath={.spec.host})
      $ curl -k -H "Authorization: Bearer $TOKEN" "https://$ROUTE/api/v1/query?query=up"
    5. 클러스터 내에서 Thanos Querier 엔드포인트에 액세스합니다.

      $ curl -k -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9091/api/v1/query?query=up"
    cluster-monitoring-metrics-api 권한의 예

    다음 예제에서는 cluster-monitoring-metrics-api 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-thanos-querier-web-cluster-monitoring-metrics-api
      $ oc create serviceaccount thanos-client --namespace=test-thanos-querier-web-cluster-monitoring-metrics-api
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-thanos-querier-web-cluster-monitoring-metrics-api \
        --namespace=openshift-monitoring \
        --role=cluster-monitoring-metrics-api  \
        --serviceaccount=test-thanos-querier-web-cluster-monitoring-metrics-api:thanos-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token thanos-client --namespace=test-thanos-querier-web-cluster-monitoring-metrics-api)
    4. Thanos Querier 엔드포인트에 외부에서 액세스합니다.

      $ ROUTE=$(oc get route thanos-querier --namespace=openshift-monitoring -ojsonpath={.spec.host})
      $ curl -k -H "Authorization: Bearer $TOKEN" "https://$ROUTE/api/v1/query?query=up"
    5. 클러스터 내에서 Thanos Querier 엔드포인트에 액세스합니다.

      $ curl -k -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9091/api/v1/query?query=up"
  • 포트 9092는 지정된 프로젝트로 제한된 /api/v1/query,/api/v1/query_range/, /api/v1/labels,/api/v1/label/*/values, /api/v1/series 엔드포인트에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자가 프로젝트의 view 클러스터 역할에 바인딩해야 합니다.

    보기 권한 예

    다음 예제에는 view 클러스터 역할에서 부여하는 실행 권한이 있습니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-thanos-querier-tenancy-view
      $ oc create serviceaccount thanos-client --namespace=test-thanos-querier-tenancy-view
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-thanos-querier-tenancy-view \
        --namespace=test-thanos-querier-tenancy-view \
        --clusterrole=view \
        --serviceaccount=test-thanos-querier-tenancy-view:thanos-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token thanos-client --namespace=test-thanos-querier-tenancy-view)
    4. 클러스터 내에서 Thanos Querier 엔드포인트에 액세스합니다. 포트는 기본적으로 외부에 노출되지 않습니다.

      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9092/api/v1/query?query=up&namespace=test-thanos-querier-tenancy-view"
  • 포트 9093은 지정된 프로젝트로 제한된 /api/v1/alerts, /api/v1/rules 엔드포인트에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 monitoring-rules-edit,monitoring-edit 또는 monitoring-rules-view 클러스터 역할에 바인딩해야 합니다.

    monitoring-rules-edit 권한 예

    다음 예제에서는 monitoring-rules-edit 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-thanos-querier-tenancy-rules-monitoring-rules-edit
      $ oc create serviceaccount thanos-client --namespace=test-thanos-querier-tenancy-rules-monitoring-rules-edit
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-thanos-querier-tenancy-rules-monitoring-rules-edit \
        --namespace=test-thanos-querier-tenancy-rules-monitoring-rules-edit \
        --clusterrole=monitoring-rules-edit \
        --serviceaccount=test-thanos-querier-tenancy-rules-monitoring-rules-edit:thanos-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token thanos-client --namespace=test-thanos-querier-tenancy-rules-monitoring-rules-edit)
    4. 클러스터 내에서 Thanos Querier 엔드포인트에 액세스합니다. 포트는 기본적으로 외부에 노출되지 않습니다.

      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9093/api/v1/rules?namespace=test-thanos-querier-tenancy-rules-monitoring-rules-edit"
      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9093/api/v1/alerts?namespace=test-thanos-querier-tenancy-rules-monitoring-rules-edit"
    monitoring-edit 권한 예

    다음 예제에서는 monitoring-edit 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-thanos-querier-tenancy-rules-monitoring-edit
      $ oc create serviceaccount thanos-client --namespace=test-thanos-querier-tenancy-rules-monitoring-edit
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-thanos-querier-tenancy-rules-monitoring-edit \
        --namespace=test-thanos-querier-tenancy-rules-monitoring-edit \
        --clusterrole=monitoring-edit \
        --serviceaccount=test-thanos-querier-tenancy-rules-monitoring-edit:thanos-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token thanos-client --namespace=test-thanos-querier-tenancy-rules-monitoring-edit)
    4. 클러스터 내에서 Thanos Querier 엔드포인트에 액세스합니다. 포트는 기본적으로 외부에 노출되지 않습니다.

      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9093/api/v1/rules?namespace=test-thanos-querier-tenancy-rules-monitoring-edit"
      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9093/api/v1/alerts?namespace=test-thanos-querier-tenancy-rules-monitoring-edit"
    monitoring-rules-view 권한 예

    다음 예제에서는 monitoring-rules-view 클러스터 역할에서 부여하는 권한을 실행합니다. 바인딩 명령은 필요한 권한이 있는 사용자가 실행해야 합니다.

    1. 테스트 네임스페이스 및 서비스 계정을 생성합니다.

      $ oc create namespace test-thanos-querier-tenancy-rules-monitoring-rules-view
      $ oc create serviceaccount thanos-client --namespace=test-thanos-querier-tenancy-rules-monitoring-rules-view
    2. 서비스 계정에 역할을 바인딩합니다. 이 예제의 바인딩은 서비스 계정에 적용되지만 모든 사용자에게 적용할 수도 있습니다.

      $ oc create rolebinding test-thanos-querier-tenancy-rules-monitoring-rules-view \
        --namespace=test-thanos-querier-tenancy-rules-monitoring-rules-view \
        --clusterrole=monitoring-rules-view \
        --serviceaccount=test-thanos-querier-tenancy-rules-monitoring-rules-view:thanos-client
    3. 엔드포인트에 액세스하는 토큰을 생성합니다.

      $ TOKEN=$(oc create token thanos-client --namespace=test-thanos-querier-tenancy-rules-monitoring-rules-view)
    4. 클러스터 내에서 Thanos Querier 엔드포인트에 액세스합니다. 포트는 기본적으로 외부에 노출되지 않습니다.

      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9093/api/v1/rules?namespace=test-thanos-querier-tenancy-rules-monitoring-rules-view"
      $ curl -k -f -H "Authorization: Bearer $TOKEN" "https://thanos-querier.openshift-monitoring:9093/api/v1/alerts?namespace=test-thanos-querier-tenancy-rules-monitoring-rules-view"
  • 포트 9094는 /metrics 엔드포인트에만 액세스할 수 있습니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.
4.3.5.2.15. openshift-user-workload-monitoring/thanos-ruler

다음 포트의 클러스터에 Thanos Ruler 웹 서버를 노출합니다.

  • 포트 9091은 모든 Thanos Ruler 엔드포인트에 대한 액세스를 제공합니다. 액세스 권한을 부여하려면 사용자를 cluster-monitoring-view 클러스터 역할에 바인딩해야 합니다.
  • 포트 9092는 /metrics 엔드포인트에만 액세스할 수 있습니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

또한 gRPC 끝점을 포트 10901에 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

4.3.5.2.16. openshift-monitoring/cluster-monitoring-operator

포트 8443에 /metrics/validate-webhook 끝점을 노출합니다. 이 포트는 내부용으로 사용되며 다른 사용은 보장되지 않습니다.

5장. 경고 관리

5.1. 관리자로 경고 관리

OpenShift Dedicated에서 경고 UI를 사용하면 경고, 음소거, 경고 규칙을 관리할 수 있습니다.

중요

OpenShift Dedicated 4.19부터 웹 콘솔의 관점에 통합됩니다. Developer 모드는 기본적으로 더 이상 활성화되지 않습니다.

모든 사용자는 모든 OpenShift Dedicated 웹 콘솔 기능과 상호 작용할 수 있습니다. 그러나 클러스터 소유자가 아닌 경우 클러스터 소유자의 특정 기능에 액세스할 수 있는 권한을 요청해야 할 수 있습니다.

여전히 개발자 화면을 활성화할 수 있습니다. 웹 콘솔의 시작 창에서 콘솔 둘러보기, 클러스터 설정, 개발자 화면 활성화에 대한 빠른 시작 정보를 찾고, 링크를 따라 새 기능 및 기능을 탐색할 수 있습니다.

참고

경고 UI에서 사용할 수 있는 경고, 음소거, 경고 규칙은 액세스할 수 있는 프로젝트와 관련이 있습니다. 예를 들어 관리자로 로그인한 경우 모든 경고, 음소거, 경고 규칙에 액세스할 수 있습니다.

5.1.1. 경고 UI에 액세스

경고 UI는 OpenShift Dedicated 웹 콘솔에서 액세스할 수 있습니다.

  • OpenShift Dedicated 웹 콘솔에서 모니터링경고 로 이동합니다. 여기에서 알림 UI의 세 가지 주요 페이지는 알림 , 무음 설정 , 알림 규칙 페이지입니다.

5.1.2. 경고, 음소거 및 경고 규칙에 대한 정보 받기

경고 UI는 경고 및 관리 경고 규칙과 음소거에 대한 자세한 정보를 제공합니다.

사전 요구 사항

  • 경고를 보고 있는 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.

프로세스

경고에 대한 정보를 얻으려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고 경고 페이지로 이동합니다.
  2. 선택 사항: 검색 목록의 이름 필드를 사용하여 이름 별로 경고를 검색합니다.
  3. 선택 사항: 필터 목록에서 필터를 선택하여 상태, 심각도 및 소스별로 경고를 필터링합니다.
  4. 선택 사항: 이름, 심각도, 상태소스 열 헤더 중 하나 이상을 클릭하여 경고를 정렬합니다.
  5. 경고 세부 정보 페이지를 보려면 경고 이름을 클릭합니다. 페이지에는 경고 시계열 데이터를 설명하는 그래프가 포함되어 있습니다. 또한 경고에 대한 다음 정보를 제공합니다.

    • 경고에 대한 설명
    • 경고와 관련된 메시지
    • 페이지가 존재하는 경우 경고에 대한 GitHub의 runbook 페이지에 대한 링크
    • 경고에 연결된 라벨
    • 관리 경고 규칙에 대한 링크
    • 존재하는 경우 경고에 대한 음소거

음소거에 대한 정보를 얻으려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고음소거 페이지로 이동합니다.
  2. 선택 사항: 이름으로 검색 필드를 사용하여 이름으로 음소거를 필터링합니다.
  3. 선택 사항: 필터 목록에서 필터를 선택하여 상태별로 음소거를 필터링합니다. 기본적으로 활성보류 중 필터가 적용됩니다.
  4. 선택 사항: 이름, 경고 실행,상태Creator 열 헤더 중 하나 이상을 클릭하여음소거 를 정렬합니다.
  5. 음소거의 이름을 선택하여 음소거 세부 정보 페이지를 확인합니다. 페이지에는 다음과 같은 세부 정보가 포함됩니다.

    • 경고 사양
    • 시작 시간
    • 종료 시간
    • 음소거 상태
    • 실행 경고 수 및 목록

경고 규칙에 대한 정보를 얻으려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고 경고 규칙 페이지로 이동합니다.
  2. 선택 사항: 필터 목록에서 필터를 선택하여 상태, 심각도 및 소스로 경고 규칙을 필터링합니다.
  3. 선택 사항: 이름,심각도, 경고 상태소스 열 헤더 중 하나 이상을 클릭하여 경고 규칙을 정렬합니다.
  4. 경고 규칙 세부 정보 페이지를 보려면 경고 규칙 의 이름을 선택합니다. 페이지는 경고 규칙에 대한 다음 세부 정보를 제공합니다.

    • 경고 규칙 이름, 심각도 및 설명.
    • 경고를 실행하기 위한 조건을 정의하는 표현식입니다.
    • 경고가 실행되기 위한 조건이 true여야 하는 시간입니다.
    • 경고 규칙에 의해 관리되는 각 경고에 대한 그래프로, 경고가 실행되는 값을 표시합니다.
    • 경고 규칙에 의해 관리되는 모든 경고의 테이블입니다.

5.1.3. 음소거 관리

OpenShift Dedicated 웹 콘솔에서 경고에 대한 음소거를 생성할 수 있습니다. 음소거를 생성한 후 이를 보고 편집하고 만료할 수 있습니다. 경고가 실행될 때 음소거된 경고에 대한 알림도 수신하지 않습니다.

참고

음소거를 생성하면 Alertmanager Pod에 복제됩니다. 그러나 Alertmanager에 대한 영구 스토리지를 구성하지 않으면 음소거가 손실될 수 있습니다. 예를 들어 모든 Alertmanager Pod가 동시에 다시 시작되면 이러한 상황이 발생할 수 있습니다.

5.1.3.1. 음소거 경고

특정 경고를 음소거하거나 사용자가 정의한 사양과 일치하는 경고를 음소거할 수 있습니다.

사전 요구 사항

  • 클러스터 관리자인 경우 dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 관리자가 아닌 사용자인 경우 다음 사용자 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

    • Alertmanager에 액세스할 수 있는 cluster-monitoring-view 클러스터 역할입니다.
    • 경고를 생성하고 음소거할 수 있는 monitoring-alertmanager-edit 역할입니다.

프로세스

특정 경고를 음소거하려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고 → 경고로 이동합니다.
  2. 음소거할 경고의 경우 kebab 를 클릭하고 음소거 경고를 선택하여 선택한 경고에 대한 기본 구성으로 음소거 경고 페이지를 엽니다.
  3. 선택 사항: 음소거의 기본 구성 세부 정보를 변경합니다.

    참고

    음소거를 저장하기 전에 코멘트를 추가해야 합니다.

  4. 음소거를 저장하려면 음소거 를 클릭합니다.

일련의 경고를 음소거하려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고음소거 로 이동합니다.
  2. 음소거 생성을 클릭합니다.
  3. 음소거 생성 페이지에서 경고의 일정, 기간 및 레이블 세부 정보를 설정합니다.

    참고

    음소거를 저장하기 전에 코멘트를 추가해야 합니다.

  4. 입력한 라벨과 일치하는 경고에 대한 음소거를 생성하려면 음소거 를 클릭합니다.
5.1.3.2. 음소거 편집

음소거를 편집하여 기존 음소거가 만료되고 변경된 구성으로 새 음소거를 생성할 수 있습니다.

사전 요구 사항

  • 클러스터 관리자인 경우 dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 관리자가 아닌 사용자인 경우 다음 사용자 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

    • Alertmanager에 액세스할 수 있는 cluster-monitoring-view 클러스터 역할입니다.
    • 경고를 생성하고 음소거할 수 있는 monitoring-alertmanager-edit 역할입니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고음소거 로 이동합니다.
  2. 수정하려는 음소거의 경우 kebab 를 클릭하고 음소거 편집을 선택합니다.

    또는 작업을 클릭하고 음소거음소거 세부 정보 페이지에서 음소거 편집을 선택할 수 있습니다.

  3. 음소거 편집 페이지에서 변경 후 음소거 를 클릭합니다. 이렇게 하면 기존 음소거가 만료되고 업데이트된 구성으로 생성됩니다.
5.1.3.3. 음소거 만료

단일 음소거 또는 여러 음소거를 만료할 수 있습니다. 음소거를 만료하면 영구적으로 비활성화됩니다.

참고

만료된 경고를 삭제할 수 없습니다. 120시간 이상 경과한 음소거는 가비지 수집됩니다.

사전 요구 사항

  • 클러스터 관리자인 경우 dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 관리자가 아닌 사용자인 경우 다음 사용자 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

    • Alertmanager에 액세스할 수 있는 cluster-monitoring-view 클러스터 역할입니다.
    • 경고를 생성하고 음소거할 수 있는 monitoring-alertmanager-edit 역할입니다.

프로세스

  1. 모니터링경고음소거 로 이동합니다.
  2. 만료하려는 음소거 또는 음소거의 경우 해당 행의 확인란을 선택합니다.
  3. Expire 1 음소거 를 클릭하여 선택한 단일 음소거를 만료하거나 < n > 음소거 를 만료하여 선택한 여러 음소거를 만료합니다. 여기서 < n >은 선택한 음소거 수입니다.

    또는 단일 음소거를 만료하려면 작업을 클릭하고 음소거에 대한 음소거 세부 정보 페이지에서 음소거 만료를 선택할 수 있습니다.

5.1.4. 사용자 정의 프로젝트에 대한 경고 규칙 관리

OpenShift Dedicated에서는 사용자 정의 프로젝트에 대한 경고 규칙을 생성, 보기, 편집 및 제거할 수 있습니다. 이러한 경고 규칙은 선택한 메트릭의 값에 따라 경고를 트리거합니다.

5.1.4.1. 사용자 정의 프로젝트에 대한 경고 규칙 생성

사용자 정의 프로젝트에 대한 경고 규칙을 생성할 수 있습니다. 이러한 경고 규칙은 선택한 메트릭의 값에 따라 경고를 트리거합니다.

참고

사용자가 경고의 영향 및 원인을 이해할 수 있도록 하려면 경고 규칙에 경고 메시지 및 심각도 값이 포함되어 있어야 합니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 클러스터 관리자로 로그인하거나 경고 규칙을 생성하려는 프로젝트에 대한 monitoring-rules-edit 클러스터 역할이 있는 사용자로 로그인했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 경고 규칙에 사용할 YAML 파일을 생성합니다. 이 예에서는 example-app-alerting-rule.yaml이라고 합니다.
  2. YAML 파일에 경고 규칙 구성을 추가합니다. 다음 예제에서는 example-alert 라는 새 경고 규칙을 생성합니다. 경고 규칙은 샘플 서비스에서 노출된 version 메트릭이 0이 되면 경고를 실행합니다.

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: example-alert
      namespace: ns1
    spec:
      groups:
      - name: example
        rules:
        - alert: VersionAlert 
    1
    
          for: 1m 
    2
    
          expr: version{job="prometheus-example-app"} == 0 
    3
    
          labels:
            severity: warning 
    4
    
          annotations:
            message: This is an example alert. 
    5
    1
    생성할 경고 규칙의 이름입니다.
    2
    경고가 실행되기 전에 조건이 true여야 하는 기간입니다.
    3
    새 규칙을 정의하는 PromQL 쿼리 표현식입니다.
    4
    경고 규칙이 경고에 할당하는 심각도입니다.
    5
    경고와 연결된 메시지입니다.
  3. 구성 파일을 리클러스터에 적용합니다.

    $ oc apply -f example-app-alerting-rule.yaml
5.1.4.2. 사용자 정의 프로젝트에 대한 프로젝트 간 경고 규칙 생성

user-workload-monitoring-config 구성 맵에서 프로젝트를 구성하여 origin 프로젝트에 바인딩되지 않은 경고 규칙을 생성할 수 있습니다. 그러면 이러한 프로젝트에서 생성된 PrometheusRule 오브젝트가 모든 프로젝트에 적용됩니다.

따라서 각 사용자 프로젝트에 개별 PrometheusRule 오브젝트가 없는 대신 여러 사용자 정의 프로젝트에 적용되는 일반 경고 규칙이 있을 수 있습니다. PrometheusRule 오브젝트에서 PromQL 쿼리를 사용하여 경고 규칙에서 포함되거나 제외되는 프로젝트를 필터링할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.

    참고

    관리자가 아닌 사용자인 경우 경고 규칙을 생성하려는 프로젝트에 대한 monitoring-rules-edit 클러스터 역할이 있는 경우에도 프로젝트 간 경고 규칙을 생성할 수 있습니다. 그러나 클러스터 관리자만 수행할 수 있는 namespacesWithoutLabelEnforcement 속성의 user-workload-monitoring-config 구성 맵에 해당 프로젝트를 구성해야 합니다.

  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 특정 프로젝트에 바인딩되지 않은 경고 규칙을 생성하려는 프로젝트를 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        namespacesWithoutLabelEnforcement: [ <namespace1>, <namespace2> ] 
    1
    
        # ...
    1
    프로젝트 간 경고 규칙을 생성할 하나 이상의 프로젝트를 지정합니다. 사용자 정의 모니터링에 대한 Prometheus 및 Thanos Ruler는 이러한 프로젝트에서 생성된 PrometheusRule 오브젝트에 namespace 레이블을 적용하지 않으므로 모든 프로젝트에 PrometheusRule 오브젝트를 적용할 수 있습니다.
  3. 경고 규칙에 사용할 YAML 파일을 생성합니다. 이 예제에서는 example-cross-project-alerting-rule.yaml 이라고 합니다.
  4. YAML 파일에 경고 규칙 구성을 추가합니다. 다음 예제에서는 example-security 라는 새 프로젝트 간 경고 규칙을 생성합니다. 경고 규칙은 사용자 프로젝트에서 restricted Pod 보안 정책을 적용하지 않으면 실행됩니다.

    프로젝트 간 경고 규칙의 예

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: example-security
      namespace: ns1 
    1
    
    spec:
      groups:
        - name: pod-security-policy
          rules:
            - alert: "ProjectNotEnforcingRestrictedPolicy" 
    2
    
              for: 5m 
    3
    
              expr: kube_namespace_labels{namespace!~"(openshift|kube).*|default",label_pod_security_kubernetes_io_enforce!="restricted"} 
    4
    
              annotations:
                message: "Restricted policy not enforced. Project {{ $labels.namespace }} does not enforce the restricted pod security policy." 
    5
    
              labels:
                severity: warning 
    6

    1
    namespacesWithoutLabelEnforcement 필드에 정의된 프로젝트를 지정해야 합니다.
    2
    생성할 경고 규칙의 이름입니다.
    3
    경고가 실행되기 전에 조건이 true여야 하는 기간입니다.
    4
    새 규칙을 정의하는 PromQL 쿼리 표현식입니다. 네임스페이스 라벨에서 레이블 일치자를 사용하여 경고 규칙에서 포함되거나 제외되는 프로젝트를 필터링할 수 있습니다.
    5
    경고와 연결된 메시지입니다.
    6
    경고 규칙이 경고에 할당하는 심각도입니다.
    중요

    namespacesWithoutLabelEnforcement 필드에 지정한 프로젝트 중 하나에만 특정 프로젝트 간 경고 규칙을 생성해야 합니다. 여러 프로젝트에서 동일한 프로젝트 간 경고 규칙을 생성하면 경고가 반복됩니다.

  5. 구성 파일을 리클러스터에 적용합니다.

    $ oc apply -f example-cross-project-alerting-rule.yaml
5.1.4.3. 단일 보기에서 모든 프로젝트의 경고 규칙 나열

전용 관리자는 코어 OpenShift Dedicated 및 사용자 정의 프로젝트에 대한 경고 규칙을 단일 보기에서 함께 나열할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고경고 규칙으로 이동합니다.
  2. 필터 드롭다운 메뉴에서 플랫폼사용자 소스를 선택합니다.

    참고

    플랫폼 소스가 기본적으로 선택됩니다.

5.1.4.4. 사용자 정의 프로젝트에 대한 경고 규칙 제거

사용자 정의 프로젝트에 대한 경고 규칙을 제거할 수 있습니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 클러스터 관리자로 로그인하거나 경고 규칙을 생성하려는 프로젝트에 대한 monitoring-rules-edit 클러스터 역할이 있는 사용자로 로그인했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  • < namespace >에서 규칙 <alerting_rule >을 제거하려면 다음을 실행합니다.

    $ oc -n <namespace> delete prometheusrule <alerting_rule>

사용자 정의 프로젝트에 대한 프로젝트 간 경고 규칙 생성은 기본적으로 활성화되어 있습니다. 클러스터 관리자는 다음과 같은 이유로 cluster-monitoring-config 구성 맵의 기능을 비활성화할 수 있습니다.

  • 사용자 정의 모니터링이 클러스터 모니터링 스택을 과부하하지 않도록 하려면 다음을 수행합니다.
  • 문제 발생 규칙을 식별하지 않고도 버그 경보 규칙이 클러스터에 적용되지 않도록 하려면 다음을 수행하십시오.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-monitoring 프로젝트에서 cluster-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. cluster-monitoring-config 구성 맵에서 data/config.yaml/userWorkload 아래의 rulesWithoutLabelEnforcementAllowed 값을 false 로 설정하여 프로젝트 간 경고 규칙을 생성하는 옵션을 비활성화합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        userWorkload:
          rulesWithoutLabelEnforcementAllowed: false
        # ...
  3. 파일을 저장하여 변경 사항을 적용합니다.

5.2. 개발자로 경고 관리

OpenShift Dedicated에서 경고 UI를 사용하면 경고, 음소거, 경고 규칙을 관리할 수 있습니다.

중요

OpenShift Dedicated 4.19부터 웹 콘솔의 관점에 통합됩니다. Developer 모드는 기본적으로 더 이상 활성화되지 않습니다.

모든 사용자는 모든 OpenShift Dedicated 웹 콘솔 기능과 상호 작용할 수 있습니다. 그러나 클러스터 소유자가 아닌 경우 클러스터 소유자의 특정 기능에 액세스할 수 있는 권한을 요청해야 할 수 있습니다.

여전히 개발자 화면을 활성화할 수 있습니다. 웹 콘솔의 시작 창에서 콘솔 둘러보기, 클러스터 설정, 개발자 화면 활성화에 대한 빠른 시작 정보를 찾고, 링크를 따라 새 기능 및 기능을 탐색할 수 있습니다.

참고

경고 UI에서 사용할 수 있는 경고, 음소거, 경고 규칙은 액세스할 수 있는 프로젝트와 관련이 있습니다.

5.2.1. 경고 UI에 액세스

경고 UI는 OpenShift Dedicated 웹 콘솔에서 액세스할 수 있습니다.

  • OpenShift Dedicated 웹 콘솔에서 모니터링경고 로 이동합니다. 여기에서 알림 UI의 세 가지 주요 페이지는 알림 , 무음 설정 , 알림 규칙 페이지입니다.

5.2.2. 경고, 음소거 및 경고 규칙에 대한 정보 받기

경고 UI는 경고 및 관리 경고 규칙과 음소거에 대한 자세한 정보를 제공합니다.

사전 요구 사항

  • 경고를 보고 있는 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.

프로세스

경고에 대한 정보를 얻으려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고 경고 페이지로 이동합니다.
  2. 선택 사항: 검색 목록의 이름 필드를 사용하여 이름 별로 경고를 검색합니다.
  3. 선택 사항: 필터 목록에서 필터를 선택하여 상태, 심각도 및 소스별로 경고를 필터링합니다.
  4. 선택 사항: 이름, 심각도, 상태소스 열 헤더 중 하나 이상을 클릭하여 경고를 정렬합니다.
  5. 경고 세부 정보 페이지를 보려면 경고 이름을 클릭합니다. 페이지에는 경고 시계열 데이터를 설명하는 그래프가 포함되어 있습니다. 또한 경고에 대한 다음 정보를 제공합니다.

    • 경고에 대한 설명
    • 경고와 관련된 메시지
    • 페이지가 존재하는 경우 경고에 대한 GitHub의 runbook 페이지에 대한 링크
    • 경고에 연결된 라벨
    • 관리 경고 규칙에 대한 링크
    • 존재하는 경우 경고에 대한 음소거

음소거에 대한 정보를 얻으려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고음소거 페이지로 이동합니다.
  2. 선택 사항: 이름으로 검색 필드를 사용하여 이름으로 음소거를 필터링합니다.
  3. 선택 사항: 필터 목록에서 필터를 선택하여 상태별로 음소거를 필터링합니다. 기본적으로 활성보류 중 필터가 적용됩니다.
  4. 선택 사항: 이름, 경고 실행,상태Creator 열 헤더 중 하나 이상을 클릭하여음소거 를 정렬합니다.
  5. 음소거의 이름을 선택하여 음소거 세부 정보 페이지를 확인합니다. 페이지에는 다음과 같은 세부 정보가 포함됩니다.

    • 경고 사양
    • 시작 시간
    • 종료 시간
    • 음소거 상태
    • 실행 경고 수 및 목록

경고 규칙에 대한 정보를 얻으려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고 경고 규칙 페이지로 이동합니다.
  2. 선택 사항: 필터 목록에서 필터를 선택하여 상태, 심각도 및 소스로 경고 규칙을 필터링합니다.
  3. 선택 사항: 이름,심각도, 경고 상태소스 열 헤더 중 하나 이상을 클릭하여 경고 규칙을 정렬합니다.
  4. 경고 규칙 세부 정보 페이지를 보려면 경고 규칙 의 이름을 선택합니다. 페이지는 경고 규칙에 대한 다음 세부 정보를 제공합니다.

    • 경고 규칙 이름, 심각도 및 설명.
    • 경고를 실행하기 위한 조건을 정의하는 표현식입니다.
    • 경고가 실행되기 위한 조건이 true여야 하는 시간입니다.
    • 경고 규칙에 의해 관리되는 각 경고에 대한 그래프로, 경고가 실행되는 값을 표시합니다.
    • 경고 규칙에 의해 관리되는 모든 경고의 테이블입니다.

5.2.3. 음소거 관리

OpenShift Dedicated 웹 콘솔에서 경고에 대한 음소거를 생성할 수 있습니다. 음소거를 생성한 후 이를 보고 편집하고 만료할 수 있습니다. 경고가 실행될 때 음소거된 경고에 대한 알림도 수신하지 않습니다.

참고

음소거를 생성하면 Alertmanager Pod에 복제됩니다. 그러나 Alertmanager에 대한 영구 스토리지를 구성하지 않으면 음소거가 손실될 수 있습니다. 예를 들어 모든 Alertmanager Pod가 동시에 다시 시작되면 이러한 상황이 발생할 수 있습니다.

5.2.3.1. 음소거 경고

특정 경고를 음소거하거나 사용자가 정의한 사양과 일치하는 경고를 음소거할 수 있습니다.

사전 요구 사항

  • 클러스터 관리자인 경우 dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 관리자가 아닌 사용자인 경우 다음 사용자 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

    • Alertmanager에 액세스할 수 있는 cluster-monitoring-view 클러스터 역할입니다.
    • 경고를 생성하고 음소거할 수 있는 monitoring-alertmanager-edit 역할입니다.

프로세스

특정 경고를 음소거하려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고 → 경고로 이동합니다.
  2. 음소거할 경고의 경우 kebab 를 클릭하고 음소거 경고를 선택하여 선택한 경고에 대한 기본 구성으로 음소거 경고 페이지를 엽니다.
  3. 선택 사항: 음소거의 기본 구성 세부 정보를 변경합니다.

    참고

    음소거를 저장하기 전에 코멘트를 추가해야 합니다.

  4. 음소거를 저장하려면 음소거 를 클릭합니다.

일련의 경고를 음소거하려면 다음을 수행합니다.

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고음소거 로 이동합니다.
  2. 음소거 생성을 클릭합니다.
  3. 음소거 생성 페이지에서 경고의 일정, 기간 및 레이블 세부 정보를 설정합니다.

    참고

    음소거를 저장하기 전에 코멘트를 추가해야 합니다.

  4. 입력한 라벨과 일치하는 경고에 대한 음소거를 생성하려면 음소거 를 클릭합니다.
5.2.3.2. 음소거 편집

음소거를 편집하여 기존 음소거가 만료되고 변경된 구성으로 새 음소거를 생성할 수 있습니다.

사전 요구 사항

  • 클러스터 관리자인 경우 dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 관리자가 아닌 사용자인 경우 다음 사용자 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

    • Alertmanager에 액세스할 수 있는 cluster-monitoring-view 클러스터 역할입니다.
    • 경고를 생성하고 음소거할 수 있는 monitoring-alertmanager-edit 역할입니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링 → 경고음소거 로 이동합니다.
  2. 수정하려는 음소거의 경우 kebab 를 클릭하고 음소거 편집을 선택합니다.

    또는 작업을 클릭하고 음소거음소거 세부 정보 페이지에서 음소거 편집을 선택할 수 있습니다.

  3. 음소거 편집 페이지에서 변경 후 음소거 를 클릭합니다. 이렇게 하면 기존 음소거가 만료되고 업데이트된 구성으로 생성됩니다.
5.2.3.3. 음소거 만료

단일 음소거 또는 여러 음소거를 만료할 수 있습니다. 음소거를 만료하면 영구적으로 비활성화됩니다.

참고

만료된 경고를 삭제할 수 없습니다. 120시간 이상 경과한 음소거는 가비지 수집됩니다.

사전 요구 사항

  • 클러스터 관리자인 경우 dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 관리자가 아닌 사용자인 경우 다음 사용자 역할이 있는 사용자로 클러스터에 액세스할 수 있습니다.

    • Alertmanager에 액세스할 수 있는 cluster-monitoring-view 클러스터 역할입니다.
    • 경고를 생성하고 음소거할 수 있는 monitoring-alertmanager-edit 역할입니다.

프로세스

  1. 모니터링경고음소거 로 이동합니다.
  2. 만료하려는 음소거 또는 음소거의 경우 해당 행의 확인란을 선택합니다.
  3. Expire 1 음소거 를 클릭하여 선택한 단일 음소거를 만료하거나 < n > 음소거 를 만료하여 선택한 여러 음소거를 만료합니다. 여기서 < n >은 선택한 음소거 수입니다.

    또는 단일 음소거를 만료하려면 작업을 클릭하고 음소거에 대한 음소거 세부 정보 페이지에서 음소거 만료를 선택할 수 있습니다.

5.2.4. 사용자 정의 프로젝트에 대한 경고 규칙 관리

OpenShift Dedicated에서는 사용자 정의 프로젝트에 대한 경고 규칙을 생성, 보기, 편집 및 제거할 수 있습니다. 이러한 경고 규칙은 선택한 메트릭의 값에 따라 경고를 트리거합니다.

5.2.4.1. 사용자 정의 프로젝트에 대한 경고 규칙 생성

사용자 정의 프로젝트에 대한 경고 규칙을 생성할 수 있습니다. 이러한 경고 규칙은 선택한 메트릭의 값에 따라 경고를 트리거합니다.

참고

사용자가 경고의 영향 및 원인을 이해할 수 있도록 하려면 경고 규칙에 경고 메시지 및 심각도 값이 포함되어 있어야 합니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 클러스터 관리자로 로그인하거나 경고 규칙을 생성하려는 프로젝트에 대한 monitoring-rules-edit 클러스터 역할이 있는 사용자로 로그인했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 경고 규칙에 사용할 YAML 파일을 생성합니다. 이 예에서는 example-app-alerting-rule.yaml이라고 합니다.
  2. YAML 파일에 경고 규칙 구성을 추가합니다. 다음 예제에서는 example-alert 라는 새 경고 규칙을 생성합니다. 경고 규칙은 샘플 서비스에서 노출된 version 메트릭이 0이 되면 경고를 실행합니다.

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: example-alert
      namespace: ns1
    spec:
      groups:
      - name: example
        rules:
        - alert: VersionAlert 
    1
    
          for: 1m 
    2
    
          expr: version{job="prometheus-example-app"} == 0 
    3
    
          labels:
            severity: warning 
    4
    
          annotations:
            message: This is an example alert. 
    5
    1
    생성할 경고 규칙의 이름입니다.
    2
    경고가 실행되기 전에 조건이 true여야 하는 기간입니다.
    3
    새 규칙을 정의하는 PromQL 쿼리 표현식입니다.
    4
    경고 규칙이 경고에 할당하는 심각도입니다.
    5
    경고와 연결된 메시지입니다.
  3. 구성 파일을 리클러스터에 적용합니다.

    $ oc apply -f example-app-alerting-rule.yaml
5.2.4.2. 사용자 정의 프로젝트에 대한 프로젝트 간 경고 규칙 생성

user-workload-monitoring-config 구성 맵에서 프로젝트를 구성하여 origin 프로젝트에 바인딩되지 않은 경고 규칙을 생성할 수 있습니다. 그러면 이러한 프로젝트에서 생성된 PrometheusRule 오브젝트가 모든 프로젝트에 적용됩니다.

따라서 각 사용자 프로젝트에 개별 PrometheusRule 오브젝트가 없는 대신 여러 사용자 정의 프로젝트에 적용되는 일반 경고 규칙이 있을 수 있습니다. PrometheusRule 오브젝트에서 PromQL 쿼리를 사용하여 경고 규칙에서 포함되거나 제외되는 프로젝트를 필터링할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.

    참고

    관리자가 아닌 사용자인 경우 경고 규칙을 생성하려는 프로젝트에 대한 monitoring-rules-edit 클러스터 역할이 있는 경우에도 프로젝트 간 경고 규칙을 생성할 수 있습니다. 그러나 클러스터 관리자만 수행할 수 있는 namespacesWithoutLabelEnforcement 속성의 user-workload-monitoring-config 구성 맵에 해당 프로젝트를 구성해야 합니다.

  • user-workload-monitoring-config ConfigMap 오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 특정 프로젝트에 바인딩되지 않은 경고 규칙을 생성하려는 프로젝트를 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        namespacesWithoutLabelEnforcement: [ <namespace1>, <namespace2> ] 
    1
    
        # ...
    1
    프로젝트 간 경고 규칙을 생성할 하나 이상의 프로젝트를 지정합니다. 사용자 정의 모니터링에 대한 Prometheus 및 Thanos Ruler는 이러한 프로젝트에서 생성된 PrometheusRule 오브젝트에 namespace 레이블을 적용하지 않으므로 모든 프로젝트에 PrometheusRule 오브젝트를 적용할 수 있습니다.
  3. 경고 규칙에 사용할 YAML 파일을 생성합니다. 이 예제에서는 example-cross-project-alerting-rule.yaml 이라고 합니다.
  4. YAML 파일에 경고 규칙 구성을 추가합니다. 다음 예제에서는 example-security 라는 새 프로젝트 간 경고 규칙을 생성합니다. 경고 규칙은 사용자 프로젝트에서 restricted Pod 보안 정책을 적용하지 않으면 실행됩니다.

    프로젝트 간 경고 규칙의 예

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: example-security
      namespace: ns1 
    1
    
    spec:
      groups:
        - name: pod-security-policy
          rules:
            - alert: "ProjectNotEnforcingRestrictedPolicy" 
    2
    
              for: 5m 
    3
    
              expr: kube_namespace_labels{namespace!~"(openshift|kube).*|default",label_pod_security_kubernetes_io_enforce!="restricted"} 
    4
    
              annotations:
                message: "Restricted policy not enforced. Project {{ $labels.namespace }} does not enforce the restricted pod security policy." 
    5
    
              labels:
                severity: warning 
    6

    1
    namespacesWithoutLabelEnforcement 필드에 정의된 프로젝트를 지정해야 합니다.
    2
    생성할 경고 규칙의 이름입니다.
    3
    경고가 실행되기 전에 조건이 true여야 하는 기간입니다.
    4
    새 규칙을 정의하는 PromQL 쿼리 표현식입니다. 네임스페이스 라벨에서 레이블 일치자를 사용하여 경고 규칙에서 포함되거나 제외되는 프로젝트를 필터링할 수 있습니다.
    5
    경고와 연결된 메시지입니다.
    6
    경고 규칙이 경고에 할당하는 심각도입니다.
    중요

    namespacesWithoutLabelEnforcement 필드에 지정한 프로젝트 중 하나에만 특정 프로젝트 간 경고 규칙을 생성해야 합니다. 여러 프로젝트에서 동일한 프로젝트 간 경고 규칙을 생성하면 경고가 반복됩니다.

  5. 구성 파일을 리클러스터에 적용합니다.

    $ oc apply -f example-cross-project-alerting-rule.yaml
5.2.4.3. 사용자 정의 프로젝트의 경고 규칙에 액세스

사용자 정의 프로젝트에 대한 경고 규칙을 나열하려면 프로젝트의 monitoring-rules-view 클러스터 역할이 할당되어야 합니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 프로젝트에 대한 monitoring-rules-view 클러스터 역할이 있는 사용자로 로그인했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. <project>에서 경고 규칙을 나열하려면 다음을 수행합니다.

    $ oc -n <project> get prometheusrule
  2. 경고 규칙의 구성을 나열하려면 다음을 실행합니다.

    $ oc -n <project> get prometheusrule <rule> -o yaml
5.2.4.4. 사용자 정의 프로젝트에 대한 경고 규칙 제거

사용자 정의 프로젝트에 대한 경고 규칙을 제거할 수 있습니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 클러스터 관리자로 로그인하거나 경고 규칙을 생성하려는 프로젝트에 대한 monitoring-rules-edit 클러스터 역할이 있는 사용자로 로그인했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  • < namespace >에서 규칙 <alerting_rule >을 제거하려면 다음을 실행합니다.

    $ oc -n <namespace> delete prometheusrule <alerting_rule>

6장. 모니터링 문제 조사

사용자 정의 프로젝트 모니터링과 관련된 일반적인 문제에 대한 문제 해결 단계를 찾습니다.

6.1. 사용자 정의 프로젝트 메트릭을 사용할 수 없는 이유 확인

사용자 정의 프로젝트를 모니터링할 때 메트릭이 표시되지 않는 경우 다음 단계에 따라 문제를 해결합니다.

프로세스

  1. 지표 이름을 쿼리하고 프로젝트가 올바른지 확인합니다.

    1. 웹 콘솔의 개발자 화면에서 모니터링 을 클릭하고 Metrics 탭으로 이동합니다.
    2. Project: 목록에서 메트릭을 보려는 프로젝트를 선택합니다.
    3. 쿼리 선택 목록에서 기존 쿼리를 선택하거나 표현식 필드에 PromQL 쿼리를 추가하여 사용자 지정 쿼리를 실행합니다.

      메트릭은 차트에 표시됩니다.

      쿼리는 프로젝트별로 수행해야 합니다. 표시된 지표는 선택한 프로젝트와 관련이 있습니다.

  2. 메트릭을 원하는 Pod가 메트릭을 적극적으로 제공하고 있는지 확인합니다. Pod에 다음 oc exec 명령을 실행하여 pod ,포트 , /metrics 를 대상으로 합니다.

    $ oc exec <sample_pod> -n <sample_namespace> -- curl <target_pod_IP>:<port>/metrics
    참고

    curl 이 설치된 포드에서 명령을 실행해야 합니다.

    다음 예제 출력은 유효한 버전 지표가 있는 결과를 보여줍니다.

    출력 예

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    # HELP version Version information about this binary-- --:--:-- --:--:--     0
    # TYPE version gauge
    version{version="v0.1.0"} 1
    100   102  100   102    0     0  51000      0 --:--:-- --:--:-- --:--:-- 51000

    잘못된 출력은 해당 애플리케이션에 문제가 있음을 나타냅니다.

  3. PodMonitor CRD를 사용하는 경우 일치하는 라벨을 사용하여 PodMonitor CRD가 올바른 Pod를 가리키도록 구성되었는지 확인합니다. 자세한 내용은 Prometheus Operator 설명서를 참조하십시오.
  4. ServiceMonitor CRD를 사용하고 Pod의 /metrics 엔드포인트가 지표 데이터를 표시하는 경우 다음 단계를 수행하여 구성을 확인합니다.

    1. 서비스가 올바른 /metrics 엔드포인트를 가리키는지 확인합니다. 이 출력의 서비스 레이블 은 서비스 모니터 레이블 및 후속 단계에서 서비스에서 정의한 /metrics 엔드포인트와 일치해야 합니다.

      $ oc get service

      출력 예

      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app: prometheus-example-app
        name: prometheus-example-app
        namespace: ns1
      spec:
        ports:
        - port: 8080
          protocol: TCP
          targetPort: 8080
          name: web
        selector:
          app: prometheus-example-app
        type: ClusterIP

      다음과 같습니다.

      kind
      API 유형을 지정합니다. 이 예에서는 서비스 API를 보여줍니다.
      metadata.labels
      이 서비스에 사용되는 레이블을 지정합니다.
    2. serviceIP,port, /metrics 엔드포인트를 쿼리하여 이전에 Pod에서 실행한 curl 명령에서 동일한 메트릭을 확인합니다.

      1. 다음 명령을 실행하여 서비스 IP를 찾습니다.

        $ oc get service -n <target_namespace>
      2. /metrics 엔드포인트를 쿼리합니다.

        $ oc exec <sample_pod> -n <sample_namespace> -- curl <service_IP>:<port>/metrics

        유효한 메트릭은 다음 예제에서 반환됩니다.

        출력 예

        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
        100   102  100   102    0     0  51000      0 --:--:-- --:--:-- --:--:--   99k
        # HELP version Version information about this binary
        # TYPE version gauge
        version{version="v0.1.0"} 1

    3. 레이블 일치를 사용하여 ServiceMonitor 오브젝트가 필요한 서비스를 가리키도록 구성되었는지 확인합니다. 이렇게 하려면 oc get 서비스 출력의 Service 오브젝트를 oc get service monitor 출력에서 ServiceMonitor 오브젝트와 비교합니다. 메트릭을 표시하려면 라벨이 일치해야 합니다.

      예를 들어 이전 단계에서 Service 오브젝트에 app: prometheus-example-app 레이블이 있고 ServiceMonitor 오브젝트에 동일한 app: prometheus-example-app match 라벨이 있는 방법을 확인합니다.

  5. 구성이 유효하고 메트릭을 사용할 수 없는 경우 지원 팀에 문의하십시오.

6.2. Prometheus가 많은 디스크 공간을 소비하는 이유 확인

개발자는 라벨을 생성하여 키-값 쌍의 형식으로 메트릭의 속성을 정의할 수 있습니다. 잠재적인 키-값 쌍의 수는 속성에 사용 가능한 값의 수에 해당합니다. 무제한의 잠재적인 값이 있는 속성을 바인딩되지 않은 속성이라고 합니다. 예를 들어, customer_id 속성은 무제한 가능한 값이 있기 때문에 바인딩되지 않은 속성입니다.

할당된 모든 키-값 쌍에는 고유한 시계열이 있습니다. 라벨에 있는 바인딩되지 않은 많은 속성을 사용하면 생성되는 시계열 수가 기하급수적으로 증가할 수 있습니다. 이는 Prometheus 성능에 영향을 미칠 수 있으며 많은 디스크 공간을 소비할 수 있습니다.

Prometheus가 많은 디스크를 사용하는 경우 다음 조치를 사용할 수 있습니다.

  • 가장 많은 시계열 데이터를 생성하는 라벨에 대한 자세한 내용은 Prometheus HTTP API를 사용하여 시계열 데이터베이스(TSDB) 상태를 확인합니다. 이렇게 하려면 클러스터 관리자 권한이 필요합니다.
  • 수집 중인 스크랩 샘플 수를 확인합니다.
  • 사용자 정의 메트릭에 할당되는 바인딩되지 않은 속성의 수를 줄임으로써 생성되는 고유의 시계열 수를 감소합니다.

    참고

    사용 가능한 값의 제한된 집합에 바인딩되는 속성을 사용하면 가능한 키 - 값 쌍 조합의 수가 줄어듭니다.

  • 사용자 정의 프로젝트에서 스크랩할 수 있는 샘플 수를 제한합니다. 여기에는 클러스터 관리자 권한이 필요합니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. OpenShift Dedicated 웹 콘솔에서 모니터링메트릭 으로 이동합니다.
  2. Expression 필드에 PromQL(Prometheus Query Language) 쿼리를 입력합니다. 다음 예제 쿼리는 디스크 공간 소비가 증가할 수 있는 높은 카디널리티 메트릭을 식별하는 데 도움이 됩니다.

    • 다음 쿼리를 실행하면 스크랩 샘플 수가 가장 많은 10개의 작업을 확인할 수 있습니다.

      topk(10, max by(namespace, job) (topk by(namespace, job) (1, scrape_samples_post_metric_relabeling)))
    • 다음 쿼리를 실행하면 지난 시간에 가장 많은 시계열 데이터를 생성한 10개의 작업을 식별하여 시계열 churn을 정확하게 지정할 수 있습니다.

      topk(10, sum by(namespace, job) (sum_over_time(scrape_series_added[1h])))
  3. 예상 스크랩 샘플 수보다 많은 메트릭에 할당된 바인딩되지 않은 라벨 값의 수를 조사합니다.

    • 메트릭이 사용자 정의 프로젝트와 관련된 경우 워크로드에 할당된 메트릭의 키-값 쌍을 확인합니다. 이는 애플리케이션 수준에서 Prometheus 클라이언트 라이브러리를 통해 구현됩니다. 라벨에서 참조되는 바인딩되지 않은 속성의 수를 제한하십시오.
    • 메트릭이 핵심 OpenShift Dedicated 프로젝트와 관련된 경우 Red Hat 고객 포털에서 Red Hat 지원 케이스를 생성합니다.
  4. dedicated-admin 으로 로그인할 때 다음 단계에 따라 Prometheus HTTP API를 사용하여 TSDB 상태를 확인합니다.

    1. 다음 명령을 실행하여 Prometheus API 경로 URL을 가져옵니다.

      $ HOST=$(oc -n openshift-monitoring get route prometheus-k8s -ojsonpath='{.status.ingress[].host}')
    2. 다음 명령을 실행하여 인증 토큰을 추출합니다.

      $ TOKEN=$(oc whoami -t)
    3. 다음 명령을 실행하여 Prometheus의 TSDB 상태를 쿼리합니다.

      $ curl -H "Authorization: Bearer $TOKEN" -k "https://$HOST/api/v1/status/tsdb"

      출력 예

      "status": "success","data":{"headStats":{"numSeries":507473,
      "numLabelPairs":19832,"chunkCount":946298,"minTime":1712253600010,
      "maxTime":1712257935346},"seriesCountByMetricName":
      [{"name":"etcd_request_duration_seconds_bucket","value":51840},
      {"name":"apiserver_request_sli_duration_seconds_bucket","value":47718},
      ...

6.3. Prometheus에 대해 KubePersistentVolumeFillingUp 경고가 실행됨

클러스터 관리자는 Prometheus에 대해 KubePersistentVolumeFillingUp 경고가 트리거되는 문제를 해결할 수 있습니다.

openshift-monitoring 프로젝트의 prometheus-k8s-* Pod에서 클레임한 PV(영구 볼륨)가 남아 있는 총 공간이 3% 미만인 경우 발생합니다. 이로 인해 Prometheus가 비정상적으로 작동할 수 있습니다.

참고

KubePersistentVolumeFillingUp 경고 두 가지가 있습니다.

  • critical alert: mounted PV의 총 공간이 3% 미만이면 severity="critical" 라벨이 있는 경고가 트리거됩니다.
  • 경고 알림: 마운트된 PV의 총 공간이 15 % 미만이고 4 일 이내에 채울 것으로 예상되는 경우 severity="warning" 라벨이 있는 경고가 트리거됩니다.

이 문제를 해결하려면 Prometheus TSDB(time-series database) 블록을 제거하여 PV에 더 많은 공간을 생성할 수 있습니다.

사전 요구 사항

  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 다음 명령을 실행하여 가장 오래된 것에서 최신으로 정렬된 모든 TSDB 블록의 크기를 나열합니다.

    $ oc debug <prometheus_k8s_pod_name> -n openshift-monitoring \
    -c prometheus --image=$(oc get po -n openshift-monitoring <prometheus_k8s_pod_name> \
    -o jsonpath='{.spec.containers[?(@.name=="prometheus")].image}') \
    -- sh -c 'cd /prometheus/;du -hs $(ls -dtr */ | grep -Eo "[0-9|A-Z]{26}")'

    & lt;prometheus_k8s_pod_name >을 KubePersistentVolumeFillingUp 경고 설명에 언급된 Pod로 바꿉니다.

    출력 예

    308M    01HVKMPKQWZYWS8WVDAYQHNMW6
    52M     01HVK64DTDA81799TBR9QDECEZ
    102M    01HVK64DS7TRZRWF2756KHST5X
    140M    01HVJS59K11FBVAPVY57K88Z11
    90M     01HVH2A5Z58SKT810EM6B9AT50
    152M    01HV8ZDVQMX41MKCN84S32RRZ1
    354M    01HV6Q2N26BK63G4RYTST71FBF
    156M    01HV664H9J9Z1FTZD73RD1563E
    216M    01HTHXB60A7F239HN7S2TENPNS
    104M    01HTHMGRXGS0WXA3WATRXHR36B

  2. 제거할 수 있는 블록 수와 블록을 확인한 다음 블록을 제거합니다. 다음 예제 명령은 prometheus-k8s-0 Pod에서 가장 오래된 세 가지 Prometheus TSDB 블록을 제거합니다.

    $ oc debug prometheus-k8s-0 -n openshift-monitoring \
    -c prometheus --image=$(oc get po -n openshift-monitoring prometheus-k8s-0 \
    -o jsonpath='{.spec.containers[?(@.name=="prometheus")].image}') \
    -- sh -c 'ls -latr /prometheus/ | egrep -o "[0-9|A-Z]{26}" | head -3 | \
    while read BLOCK; do rm -r /prometheus/$BLOCK; done'
  3. 마운트된 PV의 사용량을 확인하고 다음 명령을 실행하여 사용 가능한 공간이 충분한지 확인합니다.

    $ oc debug <prometheus_k8s_pod_name> -n openshift-monitoring \
    --image=$(oc get po -n openshift-monitoring <prometheus_k8s_pod_name> \
    -o jsonpath='{.spec.containers[?(@.name=="prometheus")].image}') -- df -h /prometheus/

    & lt;prometheus_k8s_pod_name >을 KubePersistentVolumeFillingUp 경고 설명에 언급된 Pod로 바꿉니다.

    다음 예제 출력에서는 prometheus-k8s-0 Pod에서 클레임한 마운트된 PV가 남아 있는 공간의 63%를 보여줍니다.

    출력 예

    Starting pod/prometheus-k8s-0-debug-j82w4 ...
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme0n1p4  40G   15G  40G  37% /prometheus
    
    Removing debug pod ...

7장. Cluster Monitoring Operator에 대한 구성 맵 참조

7.1. Cluster Monitoring Operator 구성 참조

OpenShift Dedicated 클러스터 모니터링의 일부는 구성할 수 있습니다. API는 다양한 구성 맵에 정의된 매개변수를 설정하여 액세스할 수 있습니다.

  • 사용자 정의 프로젝트를 모니터링하는 모니터링 구성 요소를 구성하려면 openshift-user-workload-monitoring 네임스페이스에서 user-workload-monitoring-config 라는 ConfigMap 오브젝트를 편집합니다. 이러한 구성은 UserWorkloadConfiguration 에 의해 정의됩니다.

구성 파일은 항상 구성 맵 데이터의 config.yaml 키 아래에 정의됩니다.

중요
  • 모니터링 스택의 모든 구성 매개변수가 노출되는 것은 아닙니다. 이 참조에 나열된 매개변수 및 필드만 구성에 지원됩니다. 지원되는 구성에 대한 자세한 내용은 모니터링 유지 관리 및 지원을 참조하십시오.
  • 클러스터 모니터링 구성은 선택 사항입니다.
  • 구성이 없거나 비어 있는 경우 기본값이 사용됩니다.
  • 구성에 잘못된 YAML 데이터가 있거나 초기 검증을 우회하는 지원되지 않거나 중복된 필드가 포함된 경우 Cluster Monitoring Operator가 리소스 조정을 중지하고 Operator의 상태 조건에서 Degraded=True 상태를 보고합니다.

7.2. AdditionalAlertmanagerConfig

7.2.1. 설명

additional AlertmanagerConfig 리소스는 구성 요소가 추가 Alertmanager 인스턴스와 통신하는 방법에 대한 설정을 정의합니다.

7.2.2. 필수 항목

  • apiVersion

에 나타납니다. PrometheusK8sConfig,PrometheusRestrictedConfig,ThanosRulerConfig

Expand
속성유형설명

apiVersion

string

Alertmanager의 API 버전을 정의합니다. v1 은 더 이상 지원되지 않으며 v2 는 기본값으로 설정됩니다.

bearerToken

*v1.SecretKeySelector

Alertmanager에 인증할 때 사용할 전달자 토큰이 포함된 시크릿 키 참조를 정의합니다.

pathPrefix

string

내보내기 끝점 경로 앞에 추가할 경로 접두사를 정의합니다.

스키마

string

Alertmanager 인스턴스와 통신할 때 사용할 URL 스키마를 정의합니다. 가능한 값은 http 또는 https 입니다. 기본값은 http 입니다.

staticConfigs

[]string

< hosts>:<port> 형식으로 정적으로 구성된 Alertmanager 끝점 목록입니다.

timeout

*string

경고를 보낼 때 사용되는 시간 초과 값을 정의합니다.

tlsConfig

TLSConfig

Alertmanager 연결에 사용할 TLS 설정을 정의합니다.

7.3. AlertmanagerMainConfig

7.3.1. 설명

AlertmanagerMainConfig 리소스는 openshift-monitoring 네임스페이스에서 Alertmanager 구성 요소에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

enabled

*bool

openshift-monitoring 네임스페이스에서 기본 Alertmanager 인스턴스를 활성화하거나 비활성화하는 부울 플래그입니다. 기본값은 true입니다.

enableUserAlertmanagerConfig

bool

AlertmanagerConfig 조회에 대해 사용자 정의 네임스페이스를 활성화하거나 비활성화하는 부울 플래그입니다. 이 설정은 Alertmanager의 사용자 워크로드 모니터링 인스턴스가 활성화되지 않은 경우에만 적용됩니다. 기본값은 false입니다.

logLevel

string

Alertmanager의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info,debug 입니다. 기본값은 info 입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

Alertmanager 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

secrets

[]string

Alertmanager에 마운트할 시크릿 목록을 정의합니다. 보안은 Alertmanager 오브젝트와 동일한 네임스페이스 내에 있어야 합니다. 이는 secret-<secret-name>이라는 볼륨으로 추가되고 Alertmanager Pod의 alertmanager 컨테이너에 있는/etc/alertmanager/secrets/<secret-name>에 마운트됩니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

volumeClaimTemplate

*monv1.EmbeddedPersistentVolumeClaim

Alertmanager에 대한 영구 스토리지를 정의합니다. 이 설정을 사용하여 스토리지 클래스, 볼륨 크기, 이름을 포함한 영구 볼륨 클레임을 구성합니다.

7.4. AlertmanagerUserWorkloadConfig

7.4.1. 설명

AlertmanagerUserWorkloadConfig 리소스는 사용자 정의 프로젝트에 사용되는 Alertmanager 인스턴스의 설정을 정의합니다.

UserWorkloadConfiguration에 나타납니다.

Expand
속성유형설명

enabled

bool

openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 경고에 대한 Alertmanager 전용 인스턴스를 활성화하거나 비활성화하는 부울 플래그입니다. 기본값은 false입니다.

enableAlertmanagerConfig

bool

AlertmanagerConfig 조회에 대해 사용자 정의 네임스페이스를 활성화하거나 비활성화하는 부울 플래그입니다. 기본값은 false입니다.

logLevel

string

사용자 워크로드 모니터링에 대한 Alertmanager의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info, debug 입니다. 기본값은 info 입니다.

resources

*v1.ResourceRequirements

Alertmanager 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

secrets

[]string

Alertmanager에 마운트할 시크릿 목록을 정의합니다. 보안은 Alertmanager 오브젝트와 동일한 네임스페이스 내에 있어야 합니다. 이는 secret-<secret-name>이라는 볼륨으로 추가되고 Alertmanager Pod의 alertmanager 컨테이너에 있는/etc/alertmanager/secrets/<secret-name>에 마운트됩니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

volumeClaimTemplate

*monv1.EmbeddedPersistentVolumeClaim

Alertmanager에 대한 영구 스토리지를 정의합니다. 이 설정을 사용하여 스토리지 클래스, 볼륨 크기 및 이름을 포함한 영구 볼륨 클레임을 구성합니다.

7.5. ClusterMonitoringConfiguration

7.5.1. 설명

ClusterMonitoringConfiguration 리소스는 openshift-monitoring 네임스페이스의 cluster-monitoring-config 구성 맵을 통해 기본 플랫폼 모니터링 스택을 사용자 지정하는 설정을 정의합니다.

Expand
속성유형설명

alertmanagerMain

*AlertmanagerMainConfig

AlertmanagerMainConfigopenshift-monitoring 네임스페이스에서 Alertmanager 구성 요소에 대한 설정을 정의합니다.

enableUserWorkload

*bool

UserWorkloadEnabled 는 사용자 정의 프로젝트를 모니터링할 수 있는 부울 플래그입니다.

userWorkload

*UserWorkloadConfig

UserWorkload 는 사용자 정의 프로젝트 모니터링에 대한 설정을 정의합니다.

kubeStateMetrics

*KubeStateMetricsConfig

KubeStateMetricsConfigkube-state-metrics 에이전트의 설정을 정의합니다.

metricsServer

*MetricsServerConfig

MetricsServer 는 Metrics 서버 구성 요소에 대한 설정을 정의합니다.

prometheusK8s

*PrometheusK8sConfig

PrometheusK8sConfig 는 Prometheus 구성 요소에 대한 설정을 정의합니다.

prometheusOperator

*PrometheusOperatorConfig

PrometheusOperatorConfig 는 Prometheus Operator 구성 요소에 대한 설정을 정의합니다.

prometheusOperatorAdmissionWebhook

*PrometheusOperatorAdmissionWebhookConfig

PrometheusOperatorAdmissionWebhookConfig 는 Prometheus Operator의 승인 Webhook 구성 요소에 대한 설정을 정의합니다.

openshiftStateMetrics

*OpenShiftStateMetricsConfig

OpenShiftMetricsConfigopenshift-state-metrics 에이전트의 설정을 정의합니다.

telemeterClient

*TelemeterClientConfig

TelemeterClientConfig 는 Telemeter Client 구성 요소의 설정을 정의합니다.

thanosQuerier

*ThanosQuerierConfig

ThanosQuerierConfig 는 Thanos Querier 구성 요소의 설정을 정의합니다.

nodeExporter

NodeExporterConfig

NodeExporterConfignode-exporter 에이전트의 설정을 정의합니다.

monitoringPlugin

*MonitoringPluginConfig

MonitoringPluginConfig 는 모니터링 console-plugin 구성 요소에 대한 설정을 정의합니다.

7.6. KubeStateMetricsConfig

7.6.1. 설명

KubeStateMetricsConfig 리소스는 kube-state-metrics 에이전트의 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

KubeStateMetrics 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.7. MetricsServerConfig

7.7.1. 설명

MetricsServerConfig 리소스는 Metrics 서버 구성 요소에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

audit

*Audit

Metrics 서버 인스턴스에서 사용하는 감사 구성을 정의합니다. 가능한 프로필 값은 Metadata,Request,RequestResponseNone 입니다. 기본값은 Metadata 입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

상세 정보

uint8

Metrics Server에 대한 로그 메시지의 상세 수준을 정의합니다. 유효한 값은 양의 정수이며 10 이상의 값은 일반적으로 필요하지 않습니다. 기본값은 0입니다.

resources

*v1.ResourceRequirements

Metrics 서버 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.8. MonitoringPluginConfig

7.8.1. 설명

MonitoringPluginConfig 리소스는 openshift-monitoring 네임스페이스의 웹 콘솔 플러그인 구성 요소에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

console-plugin 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.9. NodeExporterCollectorBuddyInfoConfig

7.9.1. 설명

NodeExporterCollectorBuddyInfoConfig 리소스는 node-exporter 에이전트의 buddyinfo 수집기의 온/오프 스위치로 작동합니다. 기본적으로 buddyinfo 수집기는 비활성화되어 있습니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

buddyinfo 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.10. NodeExporterCollectorConfig

7.10.1. 설명

NodeExporterCollectorConfig 리소스는 node-exporter 에이전트의 개별 수집기에 대한 설정을 정의합니다.

NodeExporterConfig에 나타납니다.

Expand
속성유형설명

cpufreq

NodeExporterCollectorCpufreqConfig

CPU 빈도 통계를 수집하는 cpufreq 수집기의 구성을 정의합니다. 기본적으로 비활성되어 있습니다.

tcpstat

NodeExporterCollectorTcpStatConfig

TCP 연결 통계를 수집하는 tcpstat 수집기의 구성을 정의합니다. 기본적으로 비활성되어 있습니다.

netdev

NodeExporterCollectorNetDevConfig

네트워크 장치 통계를 수집하는 netdev 수집기의 구성을 정의합니다. 기본적으로 활성화되어 있습니다.

netclass

NodeExporterCollectorNetClassConfig

네트워크 장치에 대한 정보를 수집하는 netclass 수집기의 구성을 정의합니다. 기본적으로 활성화되어 있습니다.

buddyinfo

NodeExporterCollectorBuddyInfoConfig

node_buddyinfo_blocks 지표에서 메모리 조각화에 대한 통계를 수집하는 buddyinfo 수집기의 구성을 정의합니다. 이 메트릭은 /proc/buddyinfo 에서 데이터를 수집합니다. 기본적으로 비활성되어 있습니다.

mountstats

NodeExporterCollectorMountStatsConfig

NFS 볼륨 I/O 활동에 대한 통계를 수집하는 mountstats 수집기의 구성을 정의합니다. 기본적으로 비활성되어 있습니다.

ksmd

NodeExporterCollectorKSMDConfig

커널 동일 페이지 병합 데몬에서 통계를 수집하는 ksmd 수집기의 구성을 정의합니다. 기본적으로 비활성되어 있습니다.

프로세스

NodeExporterCollectorProcessesConfig

시스템에서 실행 중인 프로세스 및 스레드에서 통계를 수집하는 프로세스 수집기의 구성을 정의합니다. 기본적으로 비활성되어 있습니다.

systemd

NodeExporterCollectorSystemdConfig

systemd 데몬 및 관리되는 서비스에 대한 통계를 수집하는 systemd 수집기의 구성을 정의합니다. 기본적으로 비활성되어 있습니다.

7.11. NodeExporterCollectorCpufreqConfig

7.11.1. 설명

NodeExporterCollectorCpufreqConfig 리소스를 사용하여 node-exporter 에이전트의 cpufreq 수집기를 활성화하거나 비활성화합니다. 기본적으로 cpufreq 수집기는 비활성화되어 있습니다. 특정 상황에서 cpufreq 수집기를 활성화하면 코어 수가 많은 시스템의 CPU 사용량이 증가합니다. 이 컬렉터를 활성화하고 여러 코어가 있는 시스템이 있는 경우 시스템에 과도한 CPU 사용량이 있는지 모니터링합니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

cpufreq 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.12. NodeExporterCollectorKSMDConfig

7.12.1. 설명

NodeExporterCollectorKSMDConfig 리소스를 사용하여 node-exporter 에이전트의 ksmd 수집기를 활성화하거나 비활성화합니다. 기본적으로 ksmd 수집기는 비활성화되어 있습니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

ksmd 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.13. NodeExporterCollectorMountStatsConfig

7.13.1. 설명

NodeExporterCollectorMountStatsConfig 리소스를 사용하여 node-exporter 에이전트의 mountstats 수집기를 활성화하거나 비활성화합니다. 기본적으로 mountstats 수집기는 비활성화되어 있습니다. 수집기를 활성화하면 다음 메트릭을 사용할 수 있게 됩니다. node_mountstats_nfs_read_bytes_total,node_mountstats_nfs_write_bytes_total, node_mountstats_nfs_operations_requests_total. 이러한 메트릭은 높은 카디널리티를 가질 수 있습니다. 이 수집기를 활성화하면 prometheus-k8s Pod에 대한 메모리 사용량 증가를 면밀히 모니터링합니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

mountstats 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.14. NodeExporterCollectorNetClassConfig

7.14.1. 설명

NodeExporterCollectorNetClassConfig 리소스를 사용하여 node-exporter 에이전트의 netclass 수집기를 활성화하거나 비활성화합니다. 기본적으로 netclass 수집기는 활성화됩니다. 이 수집기를 비활성화하면 이러한 메트릭을 사용할 수 없게 됩니다. node_network_info,node_network_address_assign_type, node_network_carrier_changes_changes_total ,node_network_carrier _changes_changes_total , node_network_carrier_down_changes_changes_total ,node_network_carrier_changes_total , node_network_carrier_changes_total , node_network_carrier_changes_total node_network_device_id,node_network_dormant,node_network_iface_ id,node_network_iface_link _link_mode , node_network_mtu_bytes ,node_network_iface_link_mode,node_network_mtu_bytes node_network_name_assign_type,node_network_net_dev_group,node_network_speed_bytes,node_network_transmit_queue_length, node_network_protocol_type.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

netclass 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

useNetlink

bool

netclass 수집기의 netlink 구현을 활성화하는 부울 플래그입니다. 기본값은 netlink 모드를 활성화하는 true 입니다. 이 구현에서는 netclass 수집기의 성능이 향상됩니다.

7.15. NodeExporterCollectorNetDevConfig

7.15.1. 설명

NodeExporterCollectorNetDevConfig 리소스를 사용하여 node-exporter 에이전트의 netdev 수집기를 활성화하거나 비활성화합니다. 기본적으로 netdev 수집기가 활성화됩니다. 비활성화된 경우 이러한 메트릭을 사용할 수 없게 됩니다. node_network_receive_bytes_total,node_network_receive_compressed_total,node_network_receive_drop_total,node_network_receive_errs_total,node_network_receive_fifo_total,node_network_receive_frame_frame_total node_network_receive_multicast_total,node_network_receive_nohandler_total,node_network_receive_packets_total,node_network_transmit_bytes_total,node_network_transmit_carrier_total, node_network_transmit_colls_total,node_network_transmit_compressed_total,node_network_transmit_drop_total,node_network_transmit_fifo_total,node_network_transmit_fifo_total, node_network_transmit_packets_total.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

netdev 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.16. NodeExporterCollectorProcessesConfig

7.16.1. 설명

NodeExporterCollectorProcessesConfig 리소스를 사용하여 node-exporter 에이전트의 프로세스 수집기를 활성화하거나 비활성화합니다. 수집기가 활성화되면 다음 메트릭을 사용할 수 있습니다. node_processes_max_processes,node_processes_pids,node_processes_state,node_processes_threads,node_processes_threads_state. 메트릭 node_processes_statenode_processes_threads_state 는 프로세스 및 스레드 상태에 따라 각각 최대 5개의 시리즈를 가질 수 있습니다. 프로세스 또는 스레드의 가능한 상태는 D (UNINTERRUP Cryostat_SLEEP), R (RUNNING & RUNNABLE), S (INTERRUP Cryostat_SLEEP), T (STOPPED) 또는 Z (ZOMBIE)입니다. 기본적으로 프로세스 수집기는 비활성화되어 있습니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

프로세스 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.17. NodeExporterCollectorSystemdConfig

7.17.1. 설명

NodeExporterCollectorSystemdConfig 리소스를 사용하여 node-exporter 에이전트의 systemd 수집기를 활성화하거나 비활성화합니다. 기본적으로 systemd 수집기는 비활성화되어 있습니다. 활성화하면 다음 메트릭을 사용할 수 있게 됩니다. node_systemd_system_running,node_systemd_units,node_systemd_version. 장치가 소켓을 사용하는 경우 다음과 같은 지표도 생성합니다. node_systemd_socket_accepted_connections_total,node_systemd_socket_current_connections,node_systemd_socket_refused_connections_total. units 매개 변수를 사용하여 systemd 수집기에서 포함할 systemd 장치를 선택할 수 있습니다. 선택한 단위는 각 systemd 장치의 상태를 표시하는 node_systemd_unit_state 지표를 생성하는 데 사용됩니다. 그러나 이 메트릭의 카디널리티가 높을 수 있습니다(노드당 단위당 최소 5회). 선택한 단위의 긴 목록으로 이 수집기를 활성화하면 과도한 메모리 사용량에 대해 prometheus-k8s 배포를 모니터링합니다. node_systemd_timer_last_trigger_seconds 메트릭은 units 매개변수 값을 logrotate.timer 로 구성한 경우에만 표시됩니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

systemd 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

units

[]string

systemd 수집기에서 포함할 systemd 단위와 일치하는 정규식(regex) 패턴 목록입니다. 기본적으로 목록은 비어 있으므로 수집기는 systemd 장치에 대한 지표를 노출하지 않습니다.

7.18. NodeExporterCollectorTcpStatConfig

7.18.1. 설명

NodeExporterCollectorTcpStatConfig 리소스는 node-exporter 에이전트의 tcpstat 수집기의 온/오프 스위치로 작동합니다. 기본적으로 tcpstat 수집기는 비활성화되어 있습니다.

NodeExporterCollectorConfig에 나타납니다.

Expand
속성유형설명

enabled

bool

tcpstat 수집기를 활성화하거나 비활성화하는 부울 플래그입니다.

7.19. NodeExporterConfig

7.19.1. 설명

NodeExporterConfig 리소스는 node-exporter 에이전트의 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

수집기

NodeExporterCollectorConfig

활성화되는 수집기와 추가 구성 매개 변수를 정의합니다.

maxProcs

uint32

node-exporter 프로세스가 실행될 CPU의 대상 수입니다. 기본값은 0 입니다. 즉, node-exporter가 모든 CPU에서 실행됩니다. 커널 교착 상태가 발생하거나 sysfs 에서 동시에 읽을 때 성능이 저하되는 경우 이 값을 1 로 변경하면 node-exporter가 하나의 CPU에서 실행되도록 제한할 수 있습니다. CPU 수가 많은 노드의 경우 제한을 낮은 수로 설정하면 Go 루틴이 모든 CPU에서 실행되도록 예약되지 않도록 하여 리소스를 절약할 수 있습니다. 그러나 maxProcs 값이 너무 낮고 수집해야 할 메트릭이 많은 경우 I/O 성능이 저하됩니다.

ignoredNetworkDevices

*[]string

netdevnetclass 와 같은 관련 수집기 구성에서 제외하려는 정규식으로 정의된 네트워크 장치 목록입니다. 목록이 지정되지 않은 경우 Cluster Monitoring Operator는 사전 정의된 장치 목록을 사용하여 메모리 사용량에 미치는 영향을 최소화하기 위해 제외합니다. 목록이 비어 있으면 장치가 제외되지 않습니다. 이 설정을 수정하는 경우 과도한 메모리 사용량에 대해 prometheus-k8s 배포를 주의 깊게 모니터링합니다.

resources

*v1.ResourceRequirements

NodeExporter 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

7.20. OpenShiftStateMetricsConfig

7.20.1. 설명

OpenShiftStateMetricsConfig 리소스는 openshift-state-metrics 에이전트의 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

OpenShiftStateMetrics 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.21. PrometheusK8sConfig

7.21.1. 설명

PrometheusK8sConfig 리소스는 Prometheus 구성 요소에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

additionalAlertmanagerConfigs

[]AdditionalAlertmanagerConfig

Prometheus 구성 요소에서 경고를 수신하는 추가 Alertmanager 인스턴스를 구성합니다. 기본적으로 추가 Alertmanager 인스턴스가 구성되지 않습니다.

enforcedBodySizeLimit

string

Prometheus 스크랩 메트릭에 대해 본문 크기 제한을 적용합니다. 스크랩된 대상의 본문 응답이 제한보다 크면 스크랩이 실패합니다. 다음 값은 유효합니다. 제한을 지정하지 않는 빈 값, Prometheus 크기 형식(예: 64MB) 또는 자동 문자열은 클러스터 용량에 따라 제한이 자동으로 계산됨을 나타냅니다. 기본값은 비어 있으며 제한이 없음을 나타냅니다.

externalLabels

ExternalLabels

페더레이션, 원격 스토리지 및 Alertmanager와 같은 외부 시스템과 통신할 때 모든 시계열 또는 경고에 추가할 레이블을 정의합니다. 유형은 map[string]string입니다. 기본적으로 라벨이 추가되지 않습니다.

logLevel

string

Prometheus의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info, debug 입니다. 기본값은 info 입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

queryLogFile

string

PromQL 쿼리가 기록되는 파일을 지정합니다. 이 설정은 파일 이름 중 하나일 수 있습니다. 이 경우 쿼리가 /var/log/prometheusemptyDir 볼륨에 저장되거나 emptyDir 볼륨이 마운트되고 쿼리가 저장되는 위치에 대한 전체 경로일 수 있습니다. /dev/stderr,/dev/stdout 또는 /dev/null 에 쓰는 것은 지원되지만 다른 /dev/ 경로에 쓰기는 지원되지 않습니다. 상대 경로도 지원되지 않습니다. 기본적으로 PromQL 쿼리는 기록되지 않습니다.

remoteWrite

[]RemoteWriteSpec

URL, 인증 및 레이블 재레이블 설정을 포함하여 원격 쓰기 구성을 정의합니다.

resources

*v1.ResourceRequirements

Prometheus 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

retention

string

Prometheus가 데이터를 유지하는 기간을 정의합니다. 이 정의는 [0-9]+(ms|s|m|h|d|h|d|y)(ms = 밀리초, s= seconds,m = = 분, h = 시간, d = days, w = weeks, y = years)를 사용하여 지정해야 합니다. 기본값은 15d 입니다.

retentionSize

string

데이터 블록에서 사용하는 최대 디스크 공간과 WAL(write-ahead log)을 정의합니다. 지원되는 값은 B, KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB입니다. 기본적으로 제한은 정의되지 않습니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

collectionProfile

CollectionProfile

Prometheus가 플랫폼 구성 요소에서 지표를 수집하는 데 사용하는 메트릭 컬렉션 프로필을 정의합니다. 지원되는 값은 전체 또는 최소 입니다. full 프로필(기본값)에서 Prometheus는 플랫폼 구성 요소에서 노출하는 모든 지표를 수집합니다. 최소 프로필에서 Prometheus는 기본 플랫폼 경고, 레코딩 규칙, Telemetry 및 콘솔 대시보드에 필요한 메트릭만 수집합니다.

volumeClaimTemplate

*monv1.EmbeddedPersistentVolumeClaim

Prometheus의 영구 스토리지를 정의합니다. 이 설정을 사용하여 스토리지 클래스, 볼륨 크기 및 이름을 포함한 영구 볼륨 클레임을 구성합니다.

7.22. PrometheusOperatorConfig

7.22.1. 설명

PrometheusOperatorConfig 리소스는 Prometheus Operator 구성 요소에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration,UserWorkloadConfiguration에 나타납니다.

Expand
속성유형설명

logLevel

string

Prometheus Operator의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info, debug 입니다. 기본값은 info 입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

PrometheusOperator 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.23. PrometheusOperatorAdmissionWebhookConfig

7.23.1. 설명

PrometheusOperatorAdmissionWebhookConfig 리소스는 Prometheus Operator의 승인 Webhook 워크로드에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

resources

*v1.ResourceRequirements

prometheus-operator-admission-webhook 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.24. PrometheusRestrictedConfig

7.24.1. 설명

PrometheusRestrictedConfig 리소스는 사용자 정의 프로젝트를 모니터링하는 Prometheus 구성 요소의 설정을 정의합니다.

UserWorkloadConfiguration에 나타납니다.

Expand
속성유형설명

scrapeInterval

string

ServiceMonitor 또는 PodMonitor 리소스가 값을 지정하지 않는 경우 연속 스크랩 간의 기본 간격을 구성합니다. 간격을 5초에서 5분으로 설정해야 합니다. 값은 초(예: 30s), 분(예: 1m) 또는 분 및 초(예: 1m30s)로 나타낼 수 있습니다. 기본값은 30s입니다.

evaluationInterval

string

PrometheusRule 리소스에서 값을 지정하지 않는 경우 규칙 평가 사이의 기본 간격을 구성합니다. 간격을 5초에서 5분으로 설정해야 합니다. 값은 초(예: 30s), 분(예: 1m) 또는 분 및 초(예: 1m30s)로 나타낼 수 있습니다. openshift.io/prometheus-rule-evaluation-scope=\"leaf-prometheus\" 라벨이 있는 PrometheusRule 리소스에만 적용됩니다. 기본값은 30s입니다.

additionalAlertmanagerConfigs

[]AdditionalAlertmanagerConfig

Prometheus 구성 요소에서 경고를 수신하는 추가 Alertmanager 인스턴스를 구성합니다. 기본적으로 추가 Alertmanager 인스턴스가 구성되지 않습니다.

enforcedLabelLimit

*uint64

샘플에 허용되는 라벨 수에 대한 per-scrape 제한을 지정합니다. 메트릭 재레이블 후 라벨 수가 이 제한을 초과하면 전체 스크랩이 실패로 처리됩니다. 기본값은 0 이며 이는 제한이 설정되지 않았음을 의미합니다.

enforcedLabelNameLengthLimit

*uint64

샘플의 라벨 이름 길이에 대한 per-scrape 제한을 지정합니다. 메트릭 재레이블 후 라벨 이름의 길이가 이 제한을 초과하면 전체 스크랩이 실패로 처리됩니다. 기본값은 0 이며 이는 제한이 설정되지 않았음을 의미합니다.

enforcedLabelValueLengthLimit

*uint64

샘플의 라벨 값 길이에 대한 랩별 제한을 지정합니다. 메트릭 재레이블 후 레이블 값의 길이가 이 제한을 초과하면 전체 스크랩이 실패로 처리됩니다. 기본값은 0 이며 이는 제한이 설정되지 않았음을 의미합니다.

enforcedSampleLimit

*uint64

허용되는 스크랩 샘플 수에 대한 글로벌 제한을 지정합니다. 이 설정은 값이 enforcedTargetLimit 보다 큰 경우 사용자 정의 ServiceMonitor 또는 PodMonitor 오브젝트에 설정된 SampleLimit 값을 재정의합니다. 관리자는 이 설정을 사용하여 전체 샘플 수를 제어할 수 있습니다. 기본값은 0 이며 이는 제한이 설정되지 않았음을 의미합니다.

enforcedTargetLimit

*uint64

스크랩 대상 수에 대한 글로벌 제한을 지정합니다. 이 설정은 값이 enforcedSampleLimit 보다 큰 경우 사용자 정의 ServiceMonitor 또는 PodMonitor 오브젝트에 설정된 TargetLimit 값을 재정의합니다. 관리자는 이 설정을 사용하여 전체 대상 수를 제어할 수 있습니다. 기본값은 0입니다.

externalLabels

ExternalLabels

페더레이션, 원격 스토리지 및 Alertmanager와 같은 외부 시스템과 통신할 때 모든 시계열 또는 경고에 추가할 레이블을 정의합니다. 유형은 map[string]string입니다. 기본적으로 라벨이 추가되지 않습니다.

logLevel

string

Prometheus의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info, debug 입니다. 기본 설정은 info 입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

queryLogFile

string

PromQL 쿼리가 기록되는 파일을 지정합니다. 이 설정은 파일 이름 중 하나일 수 있습니다. 이 경우 쿼리가 /var/log/prometheusemptyDir 볼륨에 저장되거나 emptyDir 볼륨이 마운트되고 쿼리가 저장되는 위치에 대한 전체 경로일 수 있습니다. /dev/stderr,/dev/stdout 또는 /dev/null 에 쓰는 것은 지원되지만 다른 /dev/ 경로에 쓰기는 지원되지 않습니다. 상대 경로도 지원되지 않습니다. 기본적으로 PromQL 쿼리는 기록되지 않습니다.

remoteWrite

[]RemoteWriteSpec

URL, 인증 및 레이블 재레이블 설정을 포함하여 원격 쓰기 구성을 정의합니다.

resources

*v1.ResourceRequirements

Prometheus 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

retention

string

Prometheus가 데이터를 유지하는 기간을 정의합니다. 이 정의는 [0-9]+(ms|s|m|h|d|h|d|y)(ms = 밀리초, s= seconds,m = = 분, h = 시간, d = days, w = weeks, y = years)를 사용하여 지정해야 합니다. 기본값은 24h 입니다.

retentionSize

string

데이터 블록에서 사용하는 최대 디스크 공간과 WAL(write-ahead log)을 정의합니다. 지원되는 값은 B, KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB입니다. 기본값은 nil입니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

volumeClaimTemplate

*monv1.EmbeddedPersistentVolumeClaim

Prometheus의 영구 스토리지를 정의합니다. 이 설정을 사용하여 볼륨의 스토리지 클래스 및 크기를 구성합니다.

7.25. RemoteWriteSpec

7.25.1. 설명

RemoteWriteSpec 리소스는 원격 쓰기 스토리지에 대한 설정을 정의합니다.

7.25.2. 필수 항목

  • url

appears in: PrometheusK8sConfig,PrometheusRestrictedConfig

Expand
속성유형설명

권한 부여

*monv1.SafeAuthorization

원격 쓰기 스토리지에 대한 권한 부여 설정을 정의합니다.

basicAuth

*monv1.BasicAuth

원격 쓰기 엔드포인트 URL에 대한 기본 인증 설정을 정의합니다.

bearerTokenFile

string

원격 쓰기 엔드포인트에 대한 전달자 토큰이 포함된 파일을 정의합니다. 그러나 Pod에 보안을 마운트할 수 없기 때문에 실제로 서비스 계정의 토큰만 참조할 수 있습니다.

headers

map[string]string

각 원격 쓰기 요청과 함께 보낼 사용자 지정 HTTP 헤더를 지정합니다. Prometheus에서 설정한 헤더는 덮어쓸 수 없습니다.

metadataConfig

*monv1.MetadataConfig

시리즈 메타데이터를 원격 쓰기 스토리지로 전송하기 위한 설정을 정의합니다.

name

string

원격 쓰기 대기열의 이름을 정의합니다. 이 이름은 큐를 구분하기 위해 메트릭 및 로깅에 사용됩니다. 지정된 경우 이 이름은 고유해야 합니다.

oauth2

*monv1.OAuth2

원격 쓰기 엔드포인트에 대한 OAuth2 인증 설정을 정의합니다.

proxyUrl

string

선택적 프록시 URL을 정의합니다. 클러스터 전체 프록시가 활성화된 경우 proxyUrl 설정을 대체합니다. 클러스터 전체 프록시는 HTTPS가 우선되는 HTTP 및 HTTPS 프록시를 모두 지원합니다.

queueConfig

*monv1.QueueConfig

원격 쓰기 대기열 매개변수에 대한 구성을 조정할 수 있습니다.

remoteTimeout

string

원격 쓰기 엔드포인트에 대한 요청의 시간 초과 값을 정의합니다.

sendExemplars

*bool

원격 쓰기를 통해 느낌 전송을 활성화합니다. 이 설정을 활성화하면 이 설정은 최대 100,000개의 exemptars를 메모리에 저장하도록 Prometheus를 구성합니다. 이 설정은 사용자 정의 모니터링에만 적용되며 코어 플랫폼 모니터링에는 적용되지 않습니다.

sigv4

*monv1.Sigv4

AWS 서명 버전 4 인증 설정을 정의합니다.

tlsConfig

*monv1.SafeTLSConfig

원격 쓰기 엔드포인트에 대한 TLS 인증 설정을 정의합니다.

url

string

샘플을 전송할 원격 쓰기 끝점의 URL을 정의합니다.

writeRelabelConfigs

[]monv1.RelabelConfig

원격 쓰기 레이블 구성 목록을 정의합니다.

7.26. TLSConfig

7.26.1. 설명

TLSConfig 리소스는 TLS 연결에 대한 설정을 구성합니다.

7.26.2. 필수 항목

  • insecureSkipVerify

appears in: additionalAlertmanagerConfig

Expand
속성유형설명

ca

*v1.SecretKeySelector

원격 호스트에 사용할 CA(인증 기관)를 포함하는 시크릿 키 참조를 정의합니다.

cert

*v1.SecretKeySelector

원격 호스트에 사용할 공용 인증서가 포함된 보안 키 참조를 정의합니다.

key

*v1.SecretKeySelector

원격 호스트에 사용할 개인 키가 포함된 시크릿 키 참조를 정의합니다.

serverName

string

반환된 인증서의 호스트 이름을 확인하는 데 사용됩니다.

insecureSkipVerify

bool

true 로 설정하면 원격 호스트의 인증서와 이름을 확인하지 않습니다.

7.27. TelemeterClientConfig

7.27.1. 설명

TelemeterClientConfig 는 Telemeter Client 구성 요소의 설정을 정의합니다.

7.27.2. 필수 항목

  • nodeSelector
  • 허용 오차

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

TelemeterClient 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.28. ThanosQuerierConfig

7.28.1. 설명

ThanosQuerierConfig 리소스는 Thanos Querier 구성 요소에 대한 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

enableRequestLogging

bool

요청 로깅을 활성화하거나 비활성화하는 부울 플래그입니다. 기본값은 false입니다.

logLevel

string

Thanos Querier의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info, debug 입니다. 기본값은 info 입니다.

enableCORS

bool

CORS 헤더를 설정할 수 있는 부울 플래그입니다. 헤더는 모든 원본에서 액세스할 수 있습니다. 기본값은 false입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

Thanos Querier 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

7.29. ThanosRulerConfig

7.29.1. 설명

ThanosRulerConfig 리소스는 사용자 정의 프로젝트의 Thanos Ruler 인스턴스에 대한 구성을 정의합니다.

UserWorkloadConfiguration에 나타납니다.

Expand
속성유형설명

additionalAlertmanagerConfigs

[]AdditionalAlertmanagerConfig

Thanos Ruler 구성 요소가 추가 Alertmanager 인스턴스와 통신하는 방법을 구성합니다. Cluster Monitoring Operator는 클러스터 전체 프록시 설정을 읽고 Alertmanager 끝점에 적절한 프록시 URL을 구성합니다. 이 그룹의 모든 Alertmanager 끝점은 동일한 프록시 URL을 사용해야 합니다. 클러스터 프록시를 바이패스하는 끝점은 별도의 그룹에 배치해야 합니다. 기본값은 nil입니다.

evaluationInterval

string

PrometheusRule 리소스에서 값을 지정하지 않는 경우 Prometheus 규칙 평가 간의 기본 간격을 구성합니다. 간격을 5초에서 5분으로 설정해야 합니다. 값은 초(예: 30s), 분(예: 1m) 또는 분 및 초(예: 1m30s)로 나타낼 수 있습니다. openshift.io/prometheus-rule-evaluation-scope=\"leaf-prometheus\" 라벨이 없는 PrometheusRule 리소스에 적용됩니다. 기본값은 15s 입니다.

logLevel

string

Thanos Ruler의 로그 수준 설정을 정의합니다. 가능한 값은 error,warn,info, debug 입니다. 기본값은 info 입니다.

nodeSelector

map[string]string

Pod가 예약된 노드를 정의합니다.

resources

*v1.ResourceRequirements

Alertmanager 컨테이너에 대한 리소스 요청 및 제한을 정의합니다.

retention

string

Prometheus가 데이터를 유지하는 기간을 정의합니다. 이 정의는 [0-9]+(ms|s|m|h|d|h|d|y)(ms = 밀리초, s= seconds,m = = 분, h = 시간, d = days, w = weeks, y = years)를 사용하여 지정해야 합니다. 기본값은 24h 입니다.

허용 오차

[]v1.Toleration

Pod에 대한 허용 오차를 정의합니다.

topologySpreadConstraints

[]v1.TopologySpreadConstraint

Pod의 토폴로지 분배 제약 조건을 정의합니다.

volumeClaimTemplate

*monv1.EmbeddedPersistentVolumeClaim

Thanos Ruler의 영구 스토리지를 정의합니다. 이 설정을 사용하여 볼륨의 스토리지 클래스 및 크기를 구성합니다.

7.30. UserWorkloadConfig

7.30.1. 설명

UserWorkloadConfig 리소스는 사용자 정의 프로젝트의 모니터링 설정을 정의합니다.

ClusterMonitoringConfiguration에 나타납니다.

Expand
속성유형설명

rulesWithoutLabelEnforcementAllowed

*bool

네임스페이스 라벨이 오브젝트의 네임스페이스에 적용되지 않는 사용자 정의 PrometheusRules 오브젝트를 배포하거나 비활성화하는 부울 플래그입니다. 이러한 오브젝트는 UserWorkloadConfiguration 리소스의 namespacesWithoutLabelEnforcement 속성 아래에 구성된 네임스페이스에 생성해야 합니다. 기본값은 true입니다.

7.31. UserWorkloadConfiguration

7.31.1. 설명

UserWorkloadConfiguration 리소스는 openshift-user-workload-monitoring 네임스페이스의 user-workload-monitoring-config 구성 맵에서 사용자 정의 프로젝트를 담당하는 설정을 정의합니다. openshift-monitoring 네임스페이스 아래에 cluster-monitoring-config 구성 맵에서 enableUserWorkloadtrue 로 설정한 경우에만 UserWorkloadConfiguration 을 활성화할 수 있습니다.

Expand
속성유형설명

alertmanager

*AlertmanagerUserWorkloadConfig

사용자 워크로드 모니터링에서 Alertmanager 구성 요소에 대한 설정을 정의합니다.

prometheus

*PrometheusRestrictedConfig

사용자 워크로드 모니터링에서 Prometheus 구성 요소의 설정을 정의합니다.

prometheusOperator

*PrometheusOperatorConfig

사용자 워크로드 모니터링에서 Prometheus Operator 구성 요소에 대한 설정을 정의합니다.

thanosRuler

*ThanosRulerConfig

사용자 워크로드 모니터링에서 Thanos Ruler 구성 요소에 대한 설정을 정의합니다.

namespacesWithoutLabelEnforcement

[]string

사용자 정의 모니터링에서 Prometheus 및 Thanos Ruler가 PrometheusRule 오브젝트에 namespace 레이블 값을 적용하지 않는 네임스페이스 목록을 정의합니다.

namespacesWithoutLabelEnforcement 속성을 사용하면 각 사용자 프로젝트에 동일한 PrometheusRule 오브젝트를 배포하는 대신 여러 프로젝트에서 쿼리할 수 있는 기록 및 경고 규칙을 정의할 수 있습니다.

결과 경고 및 지표를 프로젝트 사용자에게 표시하려면 쿼리 표현식에서 비어 있지 않은 값이 있는 namespace 레이블을 반환해야 합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동