プロジェクトからアラートルールを作成する

GDC コンソールで、プロジェクトの指標またはログのアラートルールを含むグループを作成します。指標ルールは指標データに基づいてアラートを送信し、ログルールはロギング データに基づいてアラートを送信します。アラートを保留状態にするかどうかを決定するクエリ言語式を入力する必要があります。また、ラベルやアノテーションなどの省略可能な値を含めることもできます。

ラベルを使用すると、アラートの特性を Key-Value ペアのマップとして区別できます。ラベルを使用して、重大度レベル(エラー、重大、警告、情報)、アラートコード、リソースを識別する短い名前などの情報を追加または上書きします。

一方、アノテーションを使用して、非識別的なメタデータをアラートに追加します。たとえば、ユーザー インターフェース(UI)のフィールドに表示されるメッセージや式の値、または解決アクションに役立つランブック URL を含めることができます。

また、Observability API を使用してアラートルールを作成し、カスタム リソースを直接操作して、プロジェクト Namespace の変更を更新することもできます。

始める前に

続行する前に、次の必要な権限があることを確認してください。

ログに基づいてアラート ルールを作成する

ログに基づいてアラートルールを作成または表示するために必要な権限を取得するには、プロジェクトの IAM 管理者に、プロジェクトの Namespace で次のいずれかのロールを付与するよう依頼します。

  • ロギング ルール作成者: LoggingRule カスタム リソースを作成します。Logging ルール作成者(loggingrule-creator)ロールをリクエストします。
  • ロギング ルール エディタ: LoggingRule カスタム リソースを編集または変更します。Logging ルール編集者(loggingrule-editor)ロールをリクエストします。
  • ロギング ルール閲覧者: LoggingRule カスタム リソースを表示します。ロギング ルール閲覧者(loggingrule-viewer)ロールをリクエストします。

指標に基づいてアラート ルールを作成する

指標に基づいてアラート ルールを作成または表示するために必要な権限を取得するには、プロジェクトの IAM 管理者に、プロジェクト Namespace で次のいずれかのロールを付与するよう依頼します。

  • モニタリング ルール エディタ: MonitoringRule カスタム リソースを編集または変更します。モニタリング ルール編集者(monitoringrule-editor)のロールをリクエストします。
  • モニタリング ルール閲覧者: MonitoringRule カスタム リソースを表示します。モニタリング ルール閲覧者(monitoringrule-viewer)ロールをリクエストします。

ロールの割り当ての詳細については、事前定義ロールの説明をご覧ください。

ルールの作成

アラート ルールは、推奨の方法である GDC コンソールを使用するか、プロジェクト Namespace で Observability API を使用してカスタム リソースをデプロイすることで作成できます。

コンソール

次の手順に沿って、GDC コンソールからアラートルールを作成します。

  1. GDC コンソールで、プロジェクトを選択します。
  2. ナビゲーション メニューで、[オペレーション] > [アラート] をクリックします。
  3. [アラート ポリシー] タブをクリックします。
  4. [ルールグループを作成] をクリックします。
  5. [指標] または [ログ] のどちらのグループを作成するかを選択します。指標ルールはシステム モニタリング データに基づいてアラートを送信し、ロギングルールはシステム ロギングデータに基づいてアラートを送信します。
  6. [アラート ルール グループ名] フィールドに、グループの名前を入力します。
  7. [ルール評価間隔] フィールドに、各間隔の秒数を入力します。
  8. [上限] フィールドに、アラートの最大数を入力します。アラートを無制限にする場合は、0 と入力します。
  9. [アラートルール] セクションで、[アラートルールを作成] をクリックします。
  10. アラート ルールの名前を入力します。
  11. アラート ルールの式を入力します。

    • システム ロギング ルールの場合は、LogQL(ログ クエリ言語)式を入力します。
    • システム モニタリング ルールの場合は、PromQL(Prometheus Query Language)式を入力します。

    この式は、アラートを保留状態にするかどうかを決定する真または偽のステートメントに評価される必要があります。

  12. [期間] フィールドに、アクティブなアラートが保留状態からオープン状態に移行するまでの秒数を入力します。注: 期間を 0 に設定すると、条件が満たされた直後に Observability システムからアラートが送信されます。

  13. [重大度] フィールドで、重大度レベル([エラー] や [警告] など)を選択します。

  14. 関連リソースを識別する短縮名(AISDHCP など)を入力します。

  15. アラートを識別するためのアラートコードを入力します。

  16. 問題の解決に役立つランブックの URL または情報を入力します。

  17. アラートのメッセージまたは説明を入力します。

  18. 省略可: [ラベルを追加] をクリックして、ラベルを Key-Value ペアとして追加します。

  19. 省略可: [アノテーションを追加] をクリックして、アノテーションを Key-Value ペアとして追加します。

  20. [保存] をクリックして、ルールを作成します。

  21. [作成] をクリックして、ルールグループを作成します。ルールグループが [アラート ルールグループ] リストに表示されます。

API

カスタム リソースをデプロイすることで、Observability API を使用して GDC でシステム モニタリングとロギングのルールを作成できます。MonitoringRule または LoggingRule カスタム リソースは、条件を形成する 1 つ以上のクエリと式、評価の頻度、必要に応じて条件が満たされる期間で構成されます。

次の手順に沿って、プロジェクト Namespace にカスタム リソースをデプロイしてアラートルールを作成します。

  1. モニタリングまたはロギングのアラート ルールに次のテンプレートを使用して、カスタム リソースの YAML ファイルを作成します。
  2. カスタム リソースの namespace フィールドに、プロジェクトの Namespace を入力します。
  3. [name] フィールドに、アラート ルールの構成の名前を入力します。
  4. 省略可: ロギングルールの LoggingRule カスタム リソースを構成する場合は、source フィールドでアラートのログソースを選択できます。たとえば、operationalaudit などの値を入力します。
  5. [interval] フィールドに、ルール評価間隔の期間(秒単位)を入力します。
  6. 省略可: [limit] フィールドに、アラートの最大数を入力します。アラートを無制限にする場合は、「0」と入力します。
  7. 省略可: 指標を計算して記録ルールを構成する場合は、recordRules フィールドに次の情報を入力します。

    • [record] フィールドに録音名を入力します。この値は、記録ルールを書き込む時系列を定義します。有効な指標名である必要があります。
    • expr フィールドに、次のように記録ルールの式を入力します。

      • システム ロギング ルールの場合は、LogQL(ログ クエリ言語)式を入力します。
      • システム モニタリング ルールの場合は、PromQL(Prometheus Query Language)式を入力します。

      この式は、新しい指標として記録される数値に解決される必要があります。

    • 省略可: labels フィールドで、追加または上書きするラベルを Key-Value ペアとして定義します。

  8. alertRules フィールドに次の情報を入力して、アラート ルールを構成します。

    • [alert] フィールドにアラート名を入力します。
    • [expr] フィールドに、アラート ルールの式を入力します。

      • システム ロギング ルールの場合は、LogQL 式を入力します。
      • システム モニタリング ルールの場合は、PromQL 式を入力します。

      この式は、アラートを保留状態にするかどうかを決定する真または偽のステートメントに評価される必要があります。

    • 省略可: [for] フィールドに、アラートを保留状態からオープン状態に移行するために、指定された条件を満たす必要がある期間(秒単位)を入力します。別の値を指定しない場合のデフォルトの期間は 0 秒です。

    • labels フィールドで、追加または上書きするラベルを Key-Value ペアとして定義します。次のラベルが必要です。

      • severity: 重大度レベル(errorcriticalwarninginfo など)を選択します。
      • code: アラートを識別するアラートコードを入力します。
      • resource: 関連するリソースを識別する短縮名(AISDHCP など)を入力します。
    • 省略可: annotations フィールドに、Key-Value ペアとしてアノテーションを追加します。

  9. カスタム リソースの YAML ファイルを保存します。

  10. 管理クラスタのプロジェクト Namespace にカスタム リソースをデプロイして、アラートルールを作成します。

カスタム リソースからシステム ロギングとモニタリングのルールを構成する

このセクションには、カスタム リソースをデプロイしてアラートルールを作成するために使用する必要がある 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 は、プロジェクトの 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 は、プロジェクトの Namespace に置き換えます。