2.13. 사용자 정의 프로젝트에서 바인딩되지 않은 메트릭 속성의 영향 제어
개발자는 라벨을 생성하여 키-값 쌍의 형식으로 메트릭의 속성을 정의할 수 있습니다. 잠재적인 키-값 쌍의 수는 속성에 사용 가능한 값의 수에 해당합니다. 무제한의 잠재적인 값이 있는 속성을 바인딩되지 않은 속성이라고 합니다. 예를 들어, customer_id
속성은 무제한 가능한 값이 있기 때문에 바인딩되지 않은 속성입니다.
할당된 모든 키-값 쌍에는 고유한 시계열이 있습니다. 레이블에서 많은 바인딩되지 않은 속성을 사용하면 Prometheus 성능 및 사용 가능한 디스크 공간에 영향을 줄 수 있는 기하급수적으로 시계열이 발생할 수 있습니다.
클러스터 관리자는 다음 방법을 사용하여 사용자 정의 프로젝트에서 바인딩되지 않은 메트릭 속성의 영향을 제어할 수 있습니다.
- 사용자 정의 프로젝트에서 대상 스크랩별로 허용할 수 있는 샘플 수 제한
- 스크랩된 라벨 수, 레이블 이름 길이, 레이블 값 길이를 제한합니다.
- 스크랩 샘플 임계값에 도달하거나 대상을 스크랩할 수 없는 경고 생성
많은 바인딩되지 않은 속성을 추가하여 문제를 방지하려면 메트릭에 정의된 스크랩 샘플, 라벨 이름 및 바인딩되지 않은 속성 수를 제한합니다. 또한 제한된 가능한 값 집합에 바인딩된 특성을 사용하여 잠재적인 키-값 쌍 조합의 수를 줄입니다.
2.13.1. 사용자 정의 프로젝트에 대한 스크랩 샘플 및 라벨 제한 설정
사용자 정의 프로젝트에서 대상 스크랩별로 허용할 수 있는 샘플 수를 제한할 수 있습니다. 스크랩된 라벨 수, 레이블 이름 길이, 레이블 값 길이를 제한할 수도 있습니다.
샘플 또는 라벨 제한을 설정하면 제한에 도달한 후 해당 대상 스크랩에 대한 추가 샘플 데이터가 수집되지 않습니다.
사전 요구 사항
-
cluster-admin
클러스터 역할의 사용자로 또는openshift-user-workload-monitoring
프로젝트에서user-workload-monitoring-config-edit
역할의 사용자로 클러스터에 액세스할 수 있습니다. - 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
openshift-user-workload-monitoring
프로젝트에서user-workload-monitoring-config
ConfigMap
오브젝트를 편집합니다.$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
사용자 정의 프로젝트에서 대상 스크랩별로 허용되는 샘플 수를 제한하려면
enforcedSampleLimit
구성을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
- 1
- 이 매개변수가 지정된 경우 값이 필요합니다. 이
enforcedSampleLimit
예제에서는 사용자 정의 프로젝트의 대상 스크랩별로 허용할 수 있는 샘플 수를 50,000개로 제한합니다.
enforcedLabelLimit
,enforcedLabelNameLengthLimit
,enforcedLabelNameLengthLimit
구성을data/config.yaml
에 추가하여 스크랩된 라벨 수, 라벨 이름 길이, 사용자 정의 프로젝트의 라벨 값 길이를 제한합니다.apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: enforcedLabelLimit: 500 1 enforcedLabelNameLengthLimit: 50 2 enforcedLabelValueLengthLimit: 600 3
파일을 저장하여 변경 사항을 적용합니다. 제한이 자동으로 적용됩니다.
참고클러스터 관리자가 사용자 정의 프로젝트에 대한 모니터링을 활성화하지 않는 한
user-workload-monitoring-config
ConfigMap
오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.주의user-workload-monitoring-config
ConfigMap
오브젝트에 변경 사항이 저장되면openshift-user-workload-monitoring
프로젝트의 Pod 및 기타 리소스가 재배포될 수 있습니다. 해당 프로젝트에서 실행 중인 모니터링 프로세스도 다시 시작할 수 있습니다.
2.13.2. 스크랩 샘플 경고 생성
다음의 경우를 알리는 경고를 생성할 수 있습니다.
-
대상을 스크랩할 수 없거나 지정된 기간
동안
사용할 수 없습니다. -
스크랩 샘플 임계값에 도달하거나 기간
동안
지정된 항목에 대해 초과하였습니다.
사전 요구 사항
-
cluster-admin
클러스터 역할의 사용자로 또는openshift-user-workload-monitoring
프로젝트에서user-workload-monitoring-config-edit
역할의 사용자로 클러스터에 액세스할 수 있습니다. - 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
-
user-workload-monitoring-config
ConfigMap
오브젝트가 생성되어 있습니다. -
enforcedSampleLimit
을 사용하여 사용자 정의 프로젝트에서 대상 스크랩별로 허용할 수 있는 샘플 수를 제한했습니다. -
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
대상이 중단되는 경우 및 시행된 샘플 제한에 도달하는 경우를 알려주는 경고와 함께 YAML 파일을 생성합니다. 이 예제의 파일은
monitoring-stack-alerts.yaml
이라고 합니다.apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: prometheus: k8s role: alert-rules name: monitoring-stack-alerts 1 namespace: ns1 2 spec: groups: - name: general.rules rules: - alert: TargetDown 3 annotations: message: '{{ printf "%.4g" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.' 4 expr: 100 * (count(up == 0) BY (job, namespace, service) / count(up) BY (job, namespace, service)) > 10 for: 10m 5 labels: severity: warning 6 - alert: ApproachingEnforcedSamplesLimit 7 annotations: message: '{{ $labels.container }} container of the {{ $labels.pod }} pod in the {{ $labels.namespace }} namespace consumes {{ $value | humanizePercentage }} of the samples limit budget.' 8 expr: scrape_samples_scraped/50000 > 0.8 9 for: 10m 10 labels: severity: warning 11
- 1
- 경고 규칙의 이름을 정의합니다.
- 2
- 경고 규칙이 배포될 사용자 정의 프로젝트를 지정합니다.
- 3
- 대상을 스크랩할 수 없거나 기간
동안
사용할 수 없는 경우TargetDown
경고가 실행됩니다. - 4
TargetDown
경고가 실행되는 경우 출력될 메시지입니다.- 5
- 경고가 실행되기 전에
TargetDown
경고의 조건이 이 기간에 true여야 합니다. - 6
TargetDown
경고의 심각도를 정의합니다.- 7
- 정의된 스크랩 샘플 임계값에 도달하거나 기간
동안
지정된 항목에 대해 초과하면ApproachingEnforcedSamplesLimit
경고가 실행됩니다. - 8
ApproachingEnforcedSamplesLimit
경고가 실행될 때 출력되는 메시지입니다.- 9
ApproachingEnforcedSamplesLimit
경고의 임계값입니다. 이 예에서 대상 스크랩당 샘플 수가50000
개 중 80%를 초과하면 경고가 발생합니다. 또한 경고가 실행되기 전에기간
을 통과해야 합니다. 표현식scrape_samples_scraped/<number> > <threshold>
에 있는<number>
는user-workload-monitoring-config
ConfigMap
오브젝트에 정의된enforcedSampleLimit
값과 일치해야 합니다.- 10
- 경고가 실행되기 전에
ApproachingEnforcedSamplesLimit
경고의 조건이 이 기간에 true여야 합니다. - 11
ApproachingEnforcedSamplesLimit
경고의 심각도를 정의합니다.
사용자 정의 프로젝트에 구성을 적용합니다.
$ oc apply -f monitoring-stack-alerts.yaml
추가 리소스
- 사용자 정의 워크로드 모니터링 구성 맵 생성
- 사용자 정의 프로젝트 모니터링 활성화
- 스크랩 샘플 수가 가장 많은 메트릭을 쿼리하는 단계는 Prometheus가 많은 디스크 공간을 소비하는 이유 확인을 참조하십시오.