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

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

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

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

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

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

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

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

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

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

始める前に

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

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

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

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

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

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

コンソール

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

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

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

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

  7. [アラートルール] セクションで、 [ルールを追加] をクリックします。

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

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

    • アラートが pending から open に移行するまでの時間(秒単位)。

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

    • 関連リソースを識別するための短縮名。

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

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

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

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

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

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

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

API

モニタリング API またはロギング API からアラート ルールを作成します。

  1. YAML ファイルで MonitoringRule(指標ベースのルール)または LoggingRule(ログベースのルール)のカスタム リソースを定義します。

    完全なリソース仕様には、指標ベースのルールとログベースのルールの例が示されています。

  2. 必要に応じて、YAML ファイル内の次の値を置き換えます。

    フィールド 説明
    namespace プロジェクトの Namespace。
    name アラート ルール構成の名前。
    source アラート ルールのログソース。有効なオプションは operationalaudit です。LoggingRule リソースにのみ適用されます。
    interval ルール評価間隔の期間(秒単位)。
    limit (省略可)アラートの最大数。アラートを無制限にする場合は 0 に設定します。
    alertRules アラートルールを作成するための定義。
    alertRules.alert アラートの名前。
    alertRules.expr ログベースのルールの場合は LogQL 式、指標ベースのルールの場合は PromQL 式。アラートが保留状態に移行するかどうかを判断するには、式が true または false の値に評価される必要があります。
    alertRules.for (省略可)アラートが pending から open に移行するまでの時間(秒単位)。デフォルトは 0 秒(即時トリガー)です。
    alertRules.labels アラートを分類して識別するための Key-Value ペア。これには、severitycoderesource のラベルが必要です。
    alertRules.annotations (省略可)アラートの非識別メタデータを Key-Value ペアとして追加します。
  3. YAML ファイルを保存します。

  4. リソース構成を、指標ベースまたはログベースのアラート ルールと同じ Namespace 内の 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: プロジェクトの 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: プロジェクトの Namespace。
  • LOGGING_RULE_NAME: LoggingRule 定義ファイルの名前。