알림 규칙 만들기

이 페이지에서는 Google Distributed Cloud (GDC) 오프라인 어플라이언스 환경의 로그 및 측정항목을 기반으로 알림 규칙을 만들어 사전 모니터링과 신속한 인시던트 대응을 지원하는 프로세스를 간략하게 설명합니다.

GDC를 사용하면 프로젝트의 측정항목 또는 로그를 기반으로 알림 규칙을 정의할 수 있습니다. 이러한 규칙은 특정 조건이 충족되면 자동으로 알림을 트리거합니다. 정의할 수 있는 알림 규칙 유형은 다음과 같습니다.

  • 측정항목 기반 규칙: 애플리케이션 또는 인프라에서 수집된 숫자 데이터를 기반으로 알림을 트리거합니다. 예를 들어 CPU 사용량이 80%를 초과하면 알림을 트리거하는 규칙을 만들 수 있습니다. GDC 콘솔 또는 MonitoringRule 커스텀 리소스 정의를 사용하여 측정항목 기반 규칙을 만듭니다.
  • 로그 기반 규칙: 로그 데이터 분석을 기반으로 알림을 트리거합니다. 이러한 알림을 통해 로그 내에서 오류 메시지나 비정상적인 활동과 같은 특정 이벤트나 패턴을 식별하고 이에 대응할 수 있습니다. GDC 콘솔 또는 LoggingRule 커스텀 리소스 정의를 사용하여 로그 기반 규칙을 만듭니다.

측정항목 기반 규칙과 로그 기반 규칙 모두 쿼리 언어 표현식을 사용하여 알림을 트리거하는 조건을 정의합니다. 이 표현식은 정의된 기준이 충족되는지 평가하여 수신 데이터를 필터링하고 분석합니다.

조건이 처음 충족되면 알림이 대기 중 상태로 전환됩니다. 정의한 기간 동안 조건이 참이면 알림이 열림 상태로 이동합니다. 이때 시스템에서 알림을 전송합니다.

추가 컨텍스트를 제공하고 효율적인 알림 관리를 위해 알림 규칙에 라벨과 주석을 추가할 수 있습니다.

  • 라벨: 알림을 분류하고 식별하는 키-값 쌍입니다. 다음과 같은 정보에 라벨을 사용합니다.

    • 심각도 수준 (오류, 심각, 경고)
    • 알림 코드
    • 리소스 이름
  • 주석: 알림을 보강하기 위해 식별 정보가 아닌 추가 정보를 제공합니다. 주석에는 다음 정보가 포함될 수 있습니다.

    • 자세한 오류 메시지
    • 관련 표현식
    • 런북 또는 문제 해결 가이드 링크

시작하기 전에

측정항목 기반 규칙을 관리하는 데 필요한 권한을 얻으려면 조직 IAM 관리자 또는 프로젝트 IAM 관리자에게 연결된 MonitoringRule 리소스 역할 중 하나를 부여해 달라고 요청하세요.

반면 로그 기반 규칙을 관리하는 데 필요한 권한을 얻으려면 조직 IAM 관리자 또는 프로젝트 IAM 관리자에게 연결된 LoggingRule 리소스 역할 중 하나를 부여해 달라고 요청하세요.

필요한 액세스 수준 및 권한에 따라 조직 또는 프로젝트에서 이러한 리소스에 대한 생성자, 편집자 또는 뷰어 역할을 획득할 수 있습니다. 자세한 내용은 IAM 권한 준비를 참고하세요.

알림 규칙 정의

GDC 콘솔 (권장) 또는 모니터링 및 로깅 API를 사용하여 프로젝트 네임스페이스에서 알림 규칙을 정의하여 맞춤 리소스를 적용할 수 있습니다.

다음 방법 중 하나를 선택하여 측정항목 또는 로그를 기반으로 알림 규칙을 정의합니다.

콘솔

GDC 콘솔에서 규칙 그룹에 알림 규칙을 만듭니다.

  1. GDC 콘솔에서 프로젝트를 선택합니다.
  2. 탐색 메뉴에서 작업 > 알림을 선택합니다.
  3. 알림 정책 탭을 클릭합니다.
  4. 규칙 그룹 만들기를 클릭합니다.
  5. 알림 규칙 유형을 선택합니다.

    • 측정항목 기반 알림 규칙의 경우 측정항목을 선택합니다.
    • 로그 기반 알림 규칙의 경우 로그를 선택합니다.
  6. 알림 규칙 그룹을 구성합니다.

    • 알림 규칙 그룹 이름 필드에 규칙 그룹 이름을 입력합니다.
    • 규칙 평가 간격 필드에 각 간격의 초 수를 입력합니다.
    • 한도 필드에 최대 알림 수를 입력합니다.

  7. 알림 규칙 섹션에서 규칙 추가를 클릭합니다.

  8. 알림 규칙 만들기 창에서 다음 세부정보를 입력합니다.

    • 알림 규칙의 이름입니다.
    • 알림 규칙의 표현식입니다. 로그 기반 규칙에는 LogQL을 사용하고 측정항목 기반 규칙에는 PromQL을 사용합니다.

    • 알림이 대기 중에서 열림으로 전환되기 전까지의 시간(초)입니다.

    • 심각도 수준입니다(예: 오류 또는 경고).

    • 관련 리소스를 식별하는 짧은 이름입니다.

    • 알림을 식별하는 알림 코드입니다.

    • 런북 URL 또는 문제 해결 정보입니다.

    • 알림 메시지 또는 설명입니다.

    • 선택사항: 라벨주석을 키-값 쌍으로 추가합니다.

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

  10. 만들기를 클릭하여 규칙 그룹을 만듭니다.

규칙 그룹이 알림 규칙 그룹 목록에 표시됩니다. 이 규칙 그룹 내에서 더 많은 알림 규칙을 그룹화할 수 있습니다.

API

모니터링 또는 로깅 API에서 알림 규칙을 만듭니다.

  1. YAML 파일에서 MonitoringRule (측정항목 기반 규칙) 또는 LoggingRule (로그 기반 규칙) 커스텀 리소스를 정의합니다.

    전체 리소스 사양에는 측정항목 기반 및 로그 기반 규칙의 예가 나와 있습니다.

  2. 필요에 따라 YAML 파일에서 다음 값을 바꿉니다.

    필드 설명
    namespace 프로젝트 네임스페이스입니다.
    name 알림 규칙 구성의 이름입니다.
    source 알림 규칙의 로그 소스입니다. 유효한 옵션은 operationalaudit입니다. LoggingRule 리소스에만 적용됩니다.
    interval 규칙 평가 간격의 기간(초)입니다.
    limit 선택사항. 최대 알림 수입니다. 무제한 알림의 경우 0로 설정합니다.
    alertRules 알림 규칙을 만들기 위한 정의입니다.
    alertRules.alert 알림의 이름입니다.
    alertRules.expr 로그 기반 규칙의 경우 LogQL 표현식, 측정항목 기반 규칙의 경우 PromQL 표현식입니다. 알림이 대기 상태로 전환되는지 확인하려면 표현식이 true 또는 false 값으로 평가되어야 합니다.
    alertRules.for 선택사항. 알림이 대기 중에서 열림으로 전환되기 전까지의 시간(초)입니다. 기본값은 0초 (즉시 트리거)입니다.
    alertRules.labels 알림을 분류하고 식별하는 키-값 쌍입니다. severity, code, resource 라벨이 필요합니다.
    alertRules.annotations 선택사항. 경고에 대한 식별 불가능한 메타데이터(키-값 쌍)입니다.
  3. YAML 파일을 저장합니다.

  4. 측정항목 기반 또는 로그 기반 알림 규칙과 동일한 네임스페이스 내에서 리소스 구성을 관리 API 서버에 적용합니다.

    kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yaml
    

    다음을 바꿉니다.

    • KUBECONFIG_PATH: 관리 API 서버의 kubeconfig 파일 경로입니다.
    • ALERT_RULE_NAME: MonitoringRule 또는 LoggingRule 정의 파일의 이름입니다.

전체 리소스 사양

이 섹션에는 커스텀 리소스를 적용하여 측정항목 기반 및 로그 기반 알림 규칙을 만드는 데 사용할 수 있는 YAML 템플릿이 포함되어 있습니다. GDC 콘솔에서 알림을 만드는 경우 이 섹션을 건너뛸 수 있습니다.

다음 커스텀 리소스에서 알림 규칙을 정의합니다.

  • MonitoringRule: 측정항목 기반 규칙입니다.
  • LoggingRule: 로그 기반 규칙

MonitoringRule

다음 YAML 파일은 MonitoringRule 맞춤 리소스의 템플릿을 보여줍니다. 자세한 내용은 API 참조 문서를 참고하세요.

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

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure metric-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-metric-based-alert

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

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # 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
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

다음을 바꿉니다.

  • PROJECT_NAMESPACE: 프로젝트 네임스페이스
  • MONITORING_RULE_NAME: MonitoringRule 정의 파일의 이름입니다.

LoggingRule

다음 YAML 파일은 LoggingRule 맞춤 리소스의 템플릿을 보여줍니다. 자세한 내용은 API 참조 문서를 참고하세요.

# Configures either an alert or a target record for precomputation.
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_RULE_NAME
spec:
  # Choose the log source to base alerts on (operational or audit logs).
  # Optional.
  # Valid options: 'operational' and 'audit'
  # Default value: 'operational'
  source: operational

  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure log-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-log-based-alert

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

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # 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: warning
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

다음을 바꿉니다.

  • PROJECT_NAMESPACE: 프로젝트 네임스페이스
  • LOGGING_RULE_NAME: LoggingRule 정의 파일의 이름입니다.