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

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

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

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

始める前に

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

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

録画ルールを作成する

記録ルールを作成するには、記録された指標の名前と、数値を生成する有効な式を定義します。この式は、評価されると新しい指標を生成します。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 定義ファイルの名前。