從記錄建立指標

本頁說明如何在 Google Distributed Cloud (GDC) 氣隙環境中部署 LoggingRule 自訂資源,從現有記錄產生新指標。

記錄規則可讓您預先計算常用或運算成本高昂的運算式,進而提升資訊主頁和快訊的效能。這些規則定義於 LoggingRule 自訂資源中,可從現有記錄檔產生新的時間序列指標,提升資料可觀測性。

記錄規則會儲存預先計算的結果,因此每次需要運算式時,都不會重複計算。這個方法可大幅加快查詢速度,特別是對於需要重複評估相同運算式的複雜資訊主頁和快訊。基本上,LoggingRule 資源可讓您透過在記錄規則中指定必要的計算,從現有記錄資料衍生新的指標。

事前準備

如要取得管理 LoggingRule 自訂資源所需的權限,請要求機構 IAM 管理員或專案 IAM 管理員授予您相關的 LoggingRule 角色。

視存取層級和所需權限而定,您可能會在機構或專案中取得這項資源的建立者、編輯者或檢視者角色。詳情請參閱「準備 IAM 權限」。

建立錄製規則

如要建立記錄規則,請為記錄的記錄檔定義名稱,並提供可產生數值的有效運算式。這個運算式在評估時會產生新的指標。在 Management API 伺服器上,於專案命名空間中部署 LoggingRule 自訂資源,以啟用記錄規則。

如要進一步瞭解記錄規則,請參閱 https://grafana.com/docs/loki/latest/rules/

請按照下列步驟,在專案命名空間中建立記錄規則:

  1. 找出要建立錄音規則的 GDC 專案。
  2. 建立定義 LoggingRule 自訂資源的 YAML 檔案。

    完整 LoggingRule 規格提供以記錄為準的記錄規則範例。詳情請參閱 API 參考說明文件

  3. 根據需求替換 YAML 檔案中的下列值:

    欄位名稱 說明
    namespace 專案命名空間。
    name 規則設定的名稱。
    source 記錄規則的記錄來源。有效選項為 operationalaudit
    interval 規則評估間隔的持續時間 (以秒為單位)。
    limit 選填。快訊數量上限。如要設定無限次數的快訊,請將值設為 0
    recordRules 計算新指標的定義。
    recordRules.record 新指標的記錄名稱,這個值必須是有效的指標名稱,用來定義儲存結果的時間序列。
    recordRules.expr 記錄規則的 LogQL 運算式,必須評估為數值。
    recordRules.labels 選填。要新增至新指標或覆寫新指標的標籤鍵/值組合。
  4. 儲存 YAML 檔案。

  5. 在與記錄規則相同的命名空間中,將 LoggingRule 設定套用至 Management API 伺服器:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_RULE_NAME.yaml
    

    更改下列內容:

    • KUBECONFIG_PATH:管理 API 伺服器的 kubeconfig 檔案路徑。
    • LOGGING_RULE_NAMELoggingRule 定義檔案的名稱。

完成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:您的專案命名空間。
  • LOGGING_RULE_NAMELoggingRule 定義檔案的名稱。