프로젝트에서 알림 규칙 만들기

GDC 콘솔에서 프로젝트의 측정항목 또는 로그에 대한 알림 규칙이 포함된 그룹을 만듭니다. 측정항목 규칙은 측정항목 데이터를 기반으로 알림을 전송하고, 로그 규칙은 로깅 데이터를 기반으로 알림을 전송합니다. 알림을 대기 상태로 이동해야 하는지 여부를 결정하는 쿼리 언어 표현식을 입력해야 합니다. 또한 라벨 및 주석과 같은 선택적 값을 포함할 수 있습니다.

라벨을 사용하면 알림의 특성을 키-값 쌍의 맵으로 구분할 수 있습니다. 라벨을 사용하여 심각도 수준 (오류, 심각, 경고 또는 정보), 알림 코드, 리소스를 식별하는 약칭과 같은 정보를 추가하거나 덮어씁니다.

반면 주석을 사용하여 식별되지 않는 메타데이터를 알림에 추가합니다. 예를 들어 해결 조치를 지원하기 위해 사용자 인터페이스 (UI) 필드에 표시되는 메시지 값과 표현식 값 또는 런북 URL을 포함할 수 있습니다.

또는 Observability API를 사용하여 알림 규칙을 만들어 커스텀 리소스와 직접 상호작용하고 프로젝트 네임스페이스의 변경사항을 업데이트할 수 있습니다.

시작하기 전에

계속하기 전에 다음과 같은 필수 권한이 있는지 확인합니다.

로그를 기반으로 알림 규칙 만들기

로그를 기반으로 알림 규칙을 만들거나 보는 데 필요한 권한을 얻으려면 프로젝트 IAM 관리자에게 프로젝트 네임스페이스에서 다음 역할 중 하나를 부여해 달라고 요청하세요.

  • 로깅 규칙 생성기: LoggingRule 커스텀 리소스를 만듭니다. 로깅 규칙 생성자 (loggingrule-creator) 역할을 요청합니다.
  • 로깅 규칙 편집기: LoggingRule 맞춤 리소스를 수정합니다. 로깅 규칙 편집자 (loggingrule-editor) 역할을 요청합니다.
  • 로깅 규칙 뷰어: LoggingRule 커스텀 리소스를 확인합니다. 로깅 규칙 뷰어 (loggingrule-viewer) 역할을 요청합니다.

측정항목을 기반으로 알림 규칙 만들기

측정항목을 기반으로 알림 규칙을 만들거나 보려면 프로젝트 IAM 관리자에게 프로젝트 네임스페이스에서 다음 역할 중 하나를 부여해 달라고 요청하세요.

  • 모니터링 규칙 편집기: MonitoringRule 맞춤 리소스를 수정합니다. 모니터링 규칙 편집자 (monitoringrule-editor) 역할을 요청합니다.
  • Monitoring Rule Viewer: MonitoringRule 맞춤 리소스를 봅니다. 모니터링 규칙 뷰어 (monitoringrule-viewer) 역할을 요청합니다.

역할 할당에 대한 자세한 내용은 사전 정의된 역할 설명을 참고하세요.

규칙 만들기

GDC 콘솔(기본 방법)을 사용하여 알림 규칙을 만들거나 프로젝트 네임스페이스에서 관측 가능성 API를 사용하여 커스텀 리소스를 배포할 수 있습니다.

콘솔

다음 단계를 따라 GDC 콘솔에서 알림 규칙을 만드세요.

  1. GDC 콘솔에서 프로젝트를 선택합니다.
  2. 탐색 메뉴에서 작업 > 알림을 클릭합니다.
  3. 알림 정책 탭을 클릭합니다.
  4. 규칙 그룹 만들기를 클릭합니다.
  5. 측정항목 또는 로그의 그룹을 만들지 선택합니다. 측정항목 규칙은 시스템 모니터링 데이터를 기반으로 알림을 전송하고 로깅 규칙은 시스템 로깅 데이터를 기반으로 알림을 전송합니다.
  6. 알림 규칙 그룹 이름 필드에 그룹 이름을 입력합니다.
  7. 규칙 평가 간격 필드에 각 간격의 초 수를 입력합니다.
  8. 한도 필드에 최대 알림 수를 입력합니다. 알림을 무제한으로 설정하려면 0를 입력합니다.
  9. 알림 규칙 섹션에서 알림 규칙 만들기를 클릭합니다.
  10. 알림 규칙의 이름을 입력합니다.
  11. 알림 규칙의 표현식을 입력합니다.

    • 시스템 로깅 규칙의 경우 LogQL (로그 쿼리 언어) 표현식을 입력합니다.
    • 시스템 모니터링 규칙의 경우 PromQL (Prometheus Query Language) 표현식을 입력합니다.

    이 표현식은 알림을 대기 상태로 이동해야 하는지 여부를 결정하는 true 또는 false 문으로 평가되어야 합니다.

  12. 기간 필드에 활성 알림이 대기 상태에서 열림 상태로 전환되는 시간을 초 단위로 입력합니다. 참고: 기간을 0 값으로 설정하면 관측 가능성 시스템에서 조건이 충족된 후 즉시 알림을 전송합니다.

  13. 심각도 필드에서 오류 또는 경고와 같은 심각도 수준을 선택합니다.

  14. 관련 리소스를 식별할 약어(예: AIS 또는 DHCP)를 입력합니다.

  15. 알림을 식별할 알림 코드를 입력합니다.

  16. 문제를 해결하는 데 도움이 되는 런북 URL 또는 정보를 입력합니다.

  17. 알림의 메시지 또는 설명을 입력합니다.

  18. 선택사항: 라벨 추가를 클릭하여 라벨을 키-값 쌍으로 추가합니다.

  19. 선택사항: 주석 추가를 클릭하여 주석을 키-값 쌍으로 추가합니다.

  20. 저장을 클릭하여 규칙을 만듭니다.

  21. 만들기를 클릭하여 규칙 그룹을 만듭니다. 규칙 그룹이 알림 규칙 그룹 목록에 표시됩니다.

API

관측 가능성 API를 사용하여 맞춤 리소스를 배포하면 GDC에서 시스템 모니터링 및 로깅 규칙을 만들 수 있습니다. MonitoringRule 또는 LoggingRule 맞춤 리소스는 조건을 형성하는 하나 이상의 쿼리 및 표현식, 평가 빈도, 선택적으로 조건이 충족되는 기간으로 구성됩니다.

다음 단계에 따라 프로젝트 네임스페이스에 커스텀 리소스를 배포하여 알림 규칙을 만드세요.

  1. 모니터링 또는 로깅 알림 규칙에 다음 템플릿을 사용하여 커스텀 리소스의 YAML 파일을 만듭니다.
  2. 커스텀 리소스의 namespace 필드에 프로젝트 네임스페이스를 입력합니다.
  3. name 필드에 알림 규칙 구성 이름을 입력합니다.
  4. 선택사항: 로깅 규칙에 LoggingRule 커스텀 리소스를 구성하는 경우 source 필드에서 알림의 로그 소스를 선택할 수 있습니다. 예를 들어 operational 또는 audit과 같은 값을 입력합니다.
  5. interval 필드에 규칙 평가 간격의 지속 시간(초)을 입력합니다.
  6. (선택사항) limit 필드에 최대 알림 수를 입력합니다. 알림을 무제한으로 설정하려면 0를 입력합니다.
  7. 선택사항: 측정항목을 계산하고 기록 규칙을 구성하려면 recordRules 필드에 다음 정보를 입력합니다.

    • record 필드에 녹화 이름을 입력합니다. 이 값은 녹화 규칙을 작성할 시계열을 정의하며 유효한 측정항목 이름이어야 합니다.
    • expr 필드에 녹화 규칙의 표현식을 입력합니다.

      • 시스템 로깅 규칙의 경우 LogQL (로그 쿼리 언어) 표현식을 입력합니다.
      • 시스템 모니터링 규칙의 경우 PromQL (Prometheus Query Language) 표현식을 입력합니다.

      이 표현식은 새 측정항목으로 기록되려면 숫자 값으로 평가되어야 합니다.

    • 선택사항: labels 필드에서 추가하거나 덮어쓸 라벨을 키-값 쌍으로 정의합니다.

  8. alertRules 필드에 다음 정보를 입력하여 알림 규칙을 구성합니다.

    • alert 필드에 알림 이름을 입력합니다.
    • expr 필드에 알림 규칙의 표현식을 입력합니다.

      • 시스템 로깅 규칙의 경우 LogQL 표현식을 입력합니다.
      • 시스템 모니터링 규칙의 경우 PromQL 표현식을 입력합니다.

      이 표현식은 알림을 대기 상태로 이동해야 하는지 여부를 결정하는 true 또는 false 문으로 평가되어야 합니다.

    • 선택사항: for 필드에 지정된 조건이 충족되어 알림이 대기 상태에서 열림 상태로 이동해야 하는 기간(초)을 입력합니다. 다른 값을 지정하지 않으면 기본 지속 시간은 0초입니다.

    • labels 필드에서 추가하거나 덮어쓸 라벨을 키-값 쌍으로 정의합니다. 다음 라벨이 필요합니다.

      • severity: error, critical, warning, info과 같은 심각도 수준을 선택합니다.
      • code: 알림을 식별할 알림 코드를 입력합니다.
      • resource: 관련 리소스를 식별하는 닉네임(예: AIS 또는 DHCP)을 입력합니다.
    • 선택사항: annotations 필드에 주석을 키-값 쌍으로 추가합니다.

  9. 커스텀 리소스의 YAML 파일을 저장합니다.

  10. 관리자 클러스터의 프로젝트 네임스페이스에 커스텀 리소스를 배포하여 알림 규칙을 만듭니다.

커스텀 리소스에서 시스템 로깅 및 모니터링 규칙 구성

이 섹션에는 커스텀 리소스를 배포하여 알림 규칙을 만드는 데 사용해야 하는 YAML 템플릿이 포함되어 있습니다. GDC 콘솔에서 알림을 만드는 경우 이 섹션을 건너뛸 수 있습니다.

MonitoringRule 커스텀 리소스

시스템 모니터링 규칙을 만들려면 MonitoringRule 커스텀 리소스를 만들어야 합니다. MonitoringRule는 알림을 전송할 조건을 설명하는 기록 규칙과 알림 규칙으로 구성됩니다.

다음 YAML 파일은 MonitoringRule 커스텀 리소스의 템플릿을 보여줍니다.

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
  # Choose namespace that matches the project namespace
  # Note: The alert or record will be produced in the same namespace
  namespace: PROJECT_NAMESPACE
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: 60s

  # Configure limit for number of alerts (0: no limit)
  # Optional. Default: 0 (no limit)
  limit: 0

  # Configure recording rules to generate new metrics based on pre-existing metrics.
  # Recording rules precompute expressions that are frequently needed or computationally expensive.
  # These rules save their result as a new set of time series.
  recordRules:
    # Define which timeseries to write to. The value must be a valid metric name.
  - record: MyMetricsName

    # Define PromQL expression to evaluate for this rule
    expr: rate({service_name="bob-service"} [1m])

    # Define labels to add or overwrite
    # Optional. Map of key-value pairs
    labels:
      <label_key>: <label_value>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: rate({service_name="bob-service"} [1m])

    # Define when an active alert moves from pending to open
    # Optional. Default: 0s
    for: 0s

    # Define labels to add or overwrite
    # Required, Map of key-value pairs
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    #     additional labels are optional
    labels:
      severity: error
      code: 202
      resource: AIS
      <label_key>: <label_value>

    # Define annotations to add
    # Optional. Map of key-value pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <label_key>: <label_value>

PROJECT_NAMESPACE을 프로젝트의 네임스페이스로 바꿉니다.

LoggingRule 커스텀 리소스

시스템 로깅 규칙을 만들려면 LoggingRule 커스텀 리소스를 만들어야 합니다. LoggingRule는 알림을 전송할 조건을 설명하는 기록 규칙과 알림 규칙으로 구성됩니다.

# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose namespace that matches the project namespace
  # Note: The alert or record will be produced in the same namespace
  namespace: PROJECT_NAMESPACE
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit Logs)
  # Optional. Default: Operational
  source: operational

  # Rule evaluation interval
  interval: 60s

  # Configure limit for number of alerts (0: no limit)
  # Optional. Default: 0 (no limit)
  limit: 0

  # Configure recording rules to generate new metrics based on pre-existing logs.
  # Recording rules generate metrics based on logs.
  # Use recording rules for complex alerts, which query the same expression repeatedly every time they are evaluated.
  recordRules:
    # Define which timeseries to write to. The value must be a valid metric name.
  - record: MyMetricsName

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: rate({service_name="bob-service"} [1m])

    # Define labels to add or overwrite
    # Optional. Map of key-value pairs
    labels:
      <label_key>: <label_value>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: rate({service_name="bob-service"} [1m])

    # Define when an active alert moves from pending to open
    # Optional. Default: 0s
    for: 0s

    # Define labels to add or overwrite
    # Required, Map of key-value pairs
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: warning
      code: 202
      resource: AIS
      <label_name>: <label_value>

    # Define annotations to add
    # Optional. Map of key-value pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <label_name>: <label_value>

PROJECT_NAMESPACE을 프로젝트의 네임스페이스로 바꿉니다.