このページでは、Google Distributed Cloud(GDC)エアギャップで LoggingRule カスタム リソースをデプロイして、既存のログから新しい指標を生成する方法について説明します。
記録ルールを使用すると、頻繁に使用される式や計算コストの高い式を事前に計算できるため、ダッシュボードとアラートのパフォーマンスが向上します。LoggingRule カスタム リソース内で定義されたこれらのルールは、既存のログから新しい時系列指標を生成し、データのオブザーバビリティを高めます。
事前計算された結果を保存することで、記録ルールは式が必要になるたびに冗長な計算を排除します。このメソッドを使用すると、特に同じ式を繰り返し評価する必要がある複雑なダッシュボードやアラートで、クエリ時間が大幅に短縮されます。基本的に、LoggingRule リソースを使用すると、必要な計算を記録ルール内で指定することで、既存のロギングデータから新しい指標を導出できます。
始める前に
LoggingRule カスタム リソースを管理するために必要な権限を取得するには、関連する LoggingRule ロールのいずれかを付与するよう組織 IAM 管理者またはプロジェクト IAM 管理者に依頼してください。
必要なアクセスレベルと権限に応じて、組織またはプロジェクトでこのリソースの作成者、編集者、閲覧者のロールを取得できます。詳細については、IAM 権限を準備するをご覧ください。
録画ルールを作成する
記録ルールを作成するには、記録されたログの名前と、数値を生成する有効な式を定義します。この式は、評価されると新しい指標を生成します。Management API サーバーのプロジェクト名前空間に LoggingRule カスタム リソースをデプロイして、記録ルールを有効にします。
記録ルールの詳細については、https://grafana.com/docs/loki/latest/rules/ をご覧ください。
次の手順で、プロジェクト Namespace に記録ルールを作成します。
- レコーディング ルールを作成する GDC プロジェクトを特定します。
LoggingRuleカスタム リソースを定義する YAML ファイルを作成します。LoggingRuleの完全な仕様には、ログベースの記録ルールの例が示されています。詳細については、API リファレンス ドキュメントをご覧ください。必要に応じて、YAML ファイル内の次の値を置き換えます。
フィールド名 説明 namespaceプロジェクトの Namespace。 nameルール構成の名前。 source記録ルールのログソース。有効なオプションは operationalとauditです。intervalルール評価間隔の期間(秒単位)。 limit省略可。アラートの最大数。アラートを無制限にする場合は 0に設定します。recordRules新しい指標を計算するための定義。 recordRules.record新しい指標のレコード名。値は、結果が保存される時系列を定義する有効な指標名にする必要があります。 recordRules.exprログルールの LogQL 式。数値に評価される必要があります。 recordRules.labels省略可。新しい指標に追加または上書きするラベルの Key-Value ペア。 YAML ファイルを保存します。
LoggingRule構成を、記録ルールと同じ Namespace 内の Management API サーバーに適用します。kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_RULE_NAME.yaml次のように置き換えます。
KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス。LOGGING_RULE_NAME:LoggingRule定義ファイルの名前。
LoggingRule の仕様を完了
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 recording rules to generate new metrics based on existing logs.
# 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 LogQL 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。LOGGING_RULE_NAME:LoggingRule定義ファイルの名前。