アラートルールを作成する

このページでは、Google Distributed Cloud(GDC)エアギャップ環境のログと指標に基づいてアラートルールを作成し、プロアクティブなモニタリングと迅速なインシデント対応を促進するプロセスについて説明します。

GDC では、プロジェクトの指標またはログに基づいてアラートルールを定義できます。これらのルールは、特定の条件が満たされると自動的にアラートをトリガーします。定義できるアラートルールのタイプは次のとおりです。

  • 指標ベースのルール: アプリケーションまたはインフラストラクチャから収集された数値データに基づいてアラートをトリガーします。たとえば、CPU 使用率が 80% を超えた場合にアラートをトリガーするルールを作成できます。指標ベースのルールは、GDC コンソールまたは MonitoringRule カスタム リソース定義を使用して作成します。
  • ログベースのルール: ログデータの分析に基づいてアラートをトリガーします。これらのアラートを使用すると、ログ内の特定イベントやパターン(エラー メッセージや異常なアクティビティなど)を特定して対応できます。ログベースのルールは、GDC コンソールまたは LoggingRule カスタム リソース定義を使用して作成します。

指標ベースのルールとログベースのルールの両方で、クエリ言語式を使用してアラートをトリガーする条件を定義します。この式は、受信データをフィルタして分析し、定義された基準が満たされているかどうかを評価します。

条件が最初に満たされると、アラートは保留状態に移行します。 定義した期間に条件が true の場合、アラートはオープン状態に移行します。 その時点で、システムはアラートを送信します。

コンテキストをさらに提供し、アラート管理を効率化するために、アラートルールにラベルとアノテーションを追加できます。

  • ラベル: アラートを分類して識別する Key-Value ペア。ラベルは、次のような情報に使用します。

    • 重大度(エラー、重大、警告)
    • アラートコード
    • リソース名
  • アノテーション: アラートを充実させるために、個人を特定できない情報を追加します。アノテーションには次の情報を含めることができます。

    • 詳細なエラー メッセージ
    • 関連する式
    • ランブックまたはトラブルシューティング ガイドへのリンク

始める前に

指標ベースのルールを管理するために必要な権限を取得するには、組織 IAM 管理者またはプロジェクト IAM 管理者に、関連する MonitoringRule リソースロールのいずれかを付与するよう依頼してください。

一方、ログベースのルールを管理するために必要な権限を取得するには、組織 IAM 管理者またはプロジェクト IAM 管理者に、関連する LoggingRule リソースロールのいずれかを付与するよう依頼してください。

必要なアクセスレベルと権限に応じて、組織またはプロジェクトでこれらのリソースの作成者、編集者、閲覧者のロールを取得できます。詳細については、IAM 権限を準備するをご覧ください。

アラートルールを定義する

プロジェクト名前空間でアラートルールを定義するには、GDC コンソール(推奨)またはモニタリング API とロギング API を使用してカスタム リソースを適用します。

指標またはログに基づいてアラートルールを定義するには、次のいずれかの方法を選択します。

コンソール

GDC コンソールからルールグループにアラートルールを作成します。

  1. GDC コンソールでプロジェクトを選択します。
  2. ナビゲーション メニューで、 [**オペレーション**] [>] [**アラート**] を選択します。
  3. [アラート ポリシー] タブをクリックします。
  4. [Create Rule Group] をクリックします。
  5. アラートルールのタイプを選択します。

    • 指標に基づくアラートルールの場合は、[指標] を選択します。
    • ログに基づくアラートルールの場合は、[ログ] を選択します。
  6. アラートルール グループを構成します。

    • [アラートルール グループ名] フィールドに、ルールグループの名前を入力します。
    • [ルール評価間隔] フィールドに、各間隔の秒数を入力します。
    • [上限] フィールドに、アラートの最大数を入力します。

  7. [Alert rules] セクションで、 [ Add Rule] をクリックします。

  8. [アラートルールを作成] ウィンドウで、次の詳細を入力します。

    • アラートルールの名前。
    • アラートルールの式 (ログベースのルールにはLogQL、指標ベースのルールにはPromQLを使用します)。

    • アラートが保留状態から オープン状態に移行するまでの時間(秒単位)。

    • 重大度(エラー警告 など)。

    • 関連リソースを識別するための略称。

    • アラートを識別するアラートコード。

    • ランブックの URL またはトラブルシューティング情報。

    • アラート メッセージまたは説明。

    • 省略可: Key-Value ペアとしてラベルアノテーション を追加します。

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

  10. [作成] をクリックして、ルールグループを作成します。

ルールグループが [アラートルール グループ] リストに表示されます。このルールグループ内でアラートルールをグループ化できます。

API

モニタリング 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 アラートを分類して識別する Key-Value ペア。severitycoderesource のラベルが必要です。
    alertRules.annotations 省略可。 Key-Value ペアとしてアラートに識別情報以外のメタデータ。
  3. YAML ファイルを保存します。

  4. リソース構成を、指標ベースまたはログベースのアラートルールと同じ名前空間内の Management API サーバーに適用します。

    kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yaml
    

    次のように置き換えます。

    • KUBECONFIG_PATH: Management 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 定義ファイルの名前。