既存の指標から新しい指標を作成する

このページでは、Google Distributed Cloud(GDC)エアギャップに MonitoringRule カスタム リソースをデプロイして、既存の指標から新しい指標を生成する方法について説明します。

記録ルールを使用すると、頻繁に使用される式や計算コストの高い式を事前に計算できるため、ダッシュボードとアラートのパフォーマンスが向上します。MonitoringRule カスタム リソース内で定義されたこれらのルールは、既存の指標から新しい時系列指標を生成し、データのオブザーバビリティを強化します。

事前計算された結果を保存することで、記録ルールは式が必要になるたびに冗長な計算を排除します。このメソッドを使用すると、クエリ時間が大幅に短縮されます。特に、同じ式を繰り返し評価する必要がある複雑なダッシュボードやアラートで効果を発揮します。基本的に、MonitoringRule リソースを使用すると、必要な計算を記録ルール内で指定することで、既存の指標から新しい指標を導出できます。

始める前に

MonitoringRule カスタム リソースを管理するには、必要な権限が必要です。

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 カスタム リソースを表示します。

録画ルールを作成する

記録ルールを作成するには、記録された指標の名前と、数値を生成する有効な式を定義します。この式は、評価されると新しい指標を生成します。Management API サーバーのプロジェクト名前空間に MonitoringRule カスタム リソースをデプロイして、記録ルールを有効にします。

記録ルールの詳細については、https://grafana.com/docs/loki/latest/rules/ をご覧ください。

プロジェクト Namespace に記録ルールを作成する手順は次のとおりです。

  1. レコーディング ルールを作成する GDC プロジェクトを特定します。
  2. MonitoringRule カスタム リソースを定義する YAML ファイルを作成します。

    完全な MonitoringRule 仕様には、指標ベースの記録ルールの例が示されています。詳細については、API リファレンス ドキュメントをご覧ください。

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

    フィールド名 説明
    namespace プロジェクトの Namespace。
    name ルール構成の名前。
    interval ルール評価間隔の期間(秒単位)。
    limit 省略可。アラートの最大数。アラートを無制限にする場合は 0 に設定します。
    recordRules 新しい指標を計算するための定義。
    recordRules.record 新しい指標のレコード名。値は、結果が保存される時系列を定義する有効な指標名にする必要があります。
    recordRules.expr 指標ルールの PromQL 式。数値として評価される必要があります。
    recordRules.labels 省略可。新しい指標に追加または上書きするラベルの Key-Value ペア。
  4. YAML ファイルを保存します。

  5. MonitoringRule 構成を、レコーディング ルールと同じ Namespace 内の Management API サーバーに適用します。

    kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_RULE_NAME.yaml
    

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

    • KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス。
    • MONITORING_RULE_NAME: MonitoringRule 定義ファイルの名前。

MonitoringRule の仕様を完了する

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 recording rules to generate new metrics based on existing metrics.
  # Recording rules precompute expressions that are frequently needed or computationally expensive.
  # Results are saved as a new set of time series.
  recordRules:
    # Define the time series where you want to write the recording rule.
    # The value must be a valid metric name.
  - record: MyMetricsName

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

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Optional.
    labels:
      verb: read

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

  • PROJECT_NAMESPACE: プロジェクトの Namespace。
  • MONITORING_RULE_NAME: MonitoringRule 定義ファイルの名前。