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

OpenShift Container Platform 모니터링에는 기본 경고 규칙 집합이 제공됩니다. 클러스터 관리자는 기본 경고 규칙을 볼 수 있습니다.

OpenShift Container Platform 4.12에서는 사용자 정의 프로젝트에서 경고 규칙을 생성, 보기, 편집 및 제거할 수 있습니다.

경고 규칙 고려 사항

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

11.5.1. 사용자 정의 프로젝트에 대한 경고 최적화

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

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

추가 리소스

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

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

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

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

  • 대기 시간을 줄이고 핵심 플랫폼 모니터링 구성 요소의 부하를 최소화하기 위해 openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus 레이블을 규칙에 추가할 수 있습니다. 이 레이블은 openshift-user-workload-monitoring 프로젝트에 배포된 Prometheus 인스턴스만 경고 규칙을 평가하고 Thanos Ruler 인스턴스가 이를 수행하지 못하도록 합니다.

    중요

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

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

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

참고
  • 경고 규칙을 생성할 때 동일한 이름의 규칙이 다른 프로젝트에 존재하는 경우에도 프로젝트 레이블이 적용됩니다.
  • 사용자가 경고의 영향 및 원인을 이해할 수 있도록 하려면 경고 규칙에 경고 메시지 및 심각도 값이 포함되어 있어야 합니다.

사전 요구 사항

  • 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
  • 경고 규칙을 생성하려는 프로젝트에 대한 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
          expr: version{job="prometheus-example-app"} == 0 2
          labels:
            severity: warning 3
          annotations:
            message: This is an example alert. 4
    1
    생성할 경고 규칙의 이름입니다.
    2
    새 규칙을 정의하는 PromQL 쿼리 식입니다.
    3
    경고에 할당된 심각도입니다.
    4
    경고와 연결된 메시지입니다.
  3. 구성 파일을 리클러스터에 적용합니다.

    $ oc apply -f example-app-alerting-rule.yaml

11.5.4. 사용자 정의 프로젝트의 경고 규칙에 액세스

사용자 정의 프로젝트에 대한 경고 규칙을 나열하려면 프로젝트의 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

11.5.5. 단일 보기에서 모든 프로젝트의 경고 규칙 나열

클러스터 관리자는 핵심 OpenShift Container Platform 및 사용자 정의 프로젝트에 대한 경고 규칙을 단일 보기에서 나열할 수 있습니다.

사전 요구 사항

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

절차

  1. 관리자 관점에서 Observe → Alerting → Alerting Rules 로 이동합니다.
  2. 필터 드롭다운 메뉴에서 플랫폼사용자 소스를 선택합니다.

    참고

    플랫폼 소스가 기본적으로 선택됩니다.

11.5.6. 사용자 정의 프로젝트에 대한 경고 규칙 제거

사용자 정의 프로젝트에 대한 경고 규칙을 제거할 수 있습니다.

사전 요구 사항

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

프로세스

  • 규칙 <foo><namespace>에서 제거하려면 다음을 실행합니다.

    $ oc -n <namespace> delete prometheusrule <foo>

추가 리소스