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

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

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

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

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

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

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

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

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

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

始める前に

指標ベースまたはログベースのルールを管理するには、必要な権限が必要です。

### 指標ベースのルールに対する IAM 組織ロールをリクエストする

組織の IAM 管理者に連絡して、次のロールをリクエストします。

  • MonitoringRule PA 作成者(monitoringrule-pa-creator): MonitoringRule カスタム リソースを作成します。
  • MonitoringRule PA 編集者(monitoringrule-pa-editor): MonitoringRule カスタム リソースを編集または削除します。
  • MonitoringRule PA 閲覧者(monitoringrule-pa-viewer): MonitoringRule カスタム リソースを表示します。

    指標ベースのルールに対する IAM プロジェクト ロールをリクエストする

プロジェクト IAM 管理者に連絡して、次のロールをリクエストします。

  • MonitoringRule 編集者(monitoringrule-editor): プロジェクト Namespace の MonitoringRule カスタム リソースを編集または削除します。
  • MonitoringRule 閲覧者(monitoringrule-viewer): プロジェクト Namespace の MonitoringRule カスタム リソースを表示します。

ログベースのルールに対する IAM 組織ロールをリクエストする

組織の IAM 管理者に連絡して、次のロールをリクエストします。

  • LoggingRule PA 作成者(loggingrule-pa-creator): LoggingRule カスタム リソースを作成します。
  • LoggingRule PA 編集者(loggingrule-pa-editor): LoggingRule カスタム リソースを編集または削除します。
  • LoggingRule PA 閲覧者(loggingrule-pa-viewer): LoggingRule カスタム リソースを表示します。

ログベースのルールに対する IAM プロジェクト ロールをリクエストする

プロジェクト IAM 管理者に連絡して、次のロールをリクエストします。

  • LoggingRule 編集者(loggingrule-editor): プロジェクト Namespace の LoggingRule カスタム リソースを編集または削除します。
  • LoggingRule 閲覧者(loggingrule-viewer): プロジェクト Namespace の LoggingRule カスタム リソースを表示します。

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

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 アラート ルールのログソース。有効なオプションは operational と audit です。LoggingRule リソースにのみ適用されます。
    interval ルール評価間隔の期間(秒単位)。
    limit (省略可)アラートの最大数。アラートを無制限にする場合は 0 に設定します。
    alertRules アラート ルールを作成するための定義。
    alertRules.alert アラートの名前。
    alertRules.expr ログベースのルールの場合は LogQL 式、指標ベースのルールの場合は PromQL 式。式は、アラートが保留状態に移行するかどうかを判断するために、true または false の値に評価される必要があります。
    alertRules.for (省略可)アラートが pending から open に移行するまでの時間(秒単位)。デフォルトは 0 秒(即時トリガー)です。
    alertRules.labels アラートを分類して識別するための Key-Value ペア。これには、severity、code、resource のラベルが必要です。
    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 定義ファイルの名前。