收集工作流程的記錄

本頁說明如何從 Google Distributed Cloud (GDC) 實體隔離環境中的工作流程收集記錄,以利記錄和資料可觀測性。

在 GDC 中管理作業時,記錄會記錄條件和動作。您可以擷取元件產生的記錄,記錄事件和活動。記錄平台提供自訂 API,可透過記錄目標收集工作流程產生的專案層級記錄。

如要開始收集記錄資料,請將LoggingTarget自訂資源部署至 Management API 伺服器中的專案命名空間。記錄收集器從工作流程提取資料後,記錄平台會匯總所有記錄來源的記錄、新增索引,並根據 LoggingTarget 自訂資源的設定,將記錄與標籤建立關聯。

如要存取收集的記錄,請使用 Grafana 使用者介面或記錄查詢 API,詳情請參閱「查詢及查看記錄」。

如要瞭解如何導入記錄功能以觀察資料,請參閱 Kubernetes 社群指南:

https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md.

事前準備

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

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

設定 LoggingTarget 自訂資源

LoggingTarget 自訂資源會指示記錄管道收集 GDC 專案中的記錄。您可以指定要收集記錄的目標、記錄剖析器、存取層級和任何其他設定。

這項資源定義下列設定:

  • 目標:選取要收集記錄的 Pod 和容器所用的條件。您可以指定叢集名稱、Pod 名稱前置字元和容器名稱前置字元。
  • 記錄分析工具:預先定義的剖析器,可解讀記錄項目、將記錄輸出內容對應至標籤,以及擷取相關欄位。
  • 服務識別:套用至記錄項目的服務名稱,方便識別及篩選。
  • 授權:記錄項目的存取層級,可控管誰能查看收集的記錄。

LoggingTarget 自訂資源中設定這些參數,即可精確控管記錄的收集和整理方式。

請按照下列步驟收集作業記錄:

  1. 決定要從哪個 GDC 專案收集記錄。
  2. LoggingTarget 設定中,指定要收集作業記錄的 Pod、專案命名空間,以及任何其他設定。

    下列 YAML 檔案顯示 LoggingTarget 中的 LoggingTarget 設定範例,其中要收集記錄的 Pod 名稱前置字元為 my-pod-prefix,記錄項目的存取層級授予應用程式運算子 (ao),服務名稱為 my-service-name,記錄格式為 JSON:my-project-namespace

    # Configures a log scraping job
    apiVersion: logging.gdc.goog/v1
    kind: LoggingTarget
    metadata:
      # Choose a namespace that matches the namespace of the workload pods.
      namespace: my-project-namespace
      name: my-logging-target
    spec:
      selector:
        matchPodNames:
          - my-pod-prefix
      parser: json
      logAccessLevel: ao
      serviceName: my-service-name
    

    如需其他欄位和選項,請參閱完整LoggingTarget規格API 參考說明文件

  3. 在與目標 Pod 相同的命名空間中,將 LoggingTarget 設定套用至 Management API 伺服器:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_TARGET_NAME.yaml
    

    更改下列內容:

    • KUBECONFIG_PATH:管理 API 伺服器的 kubeconfig 檔案路徑。
    • LOGGING_TARGET_NAME:定義檔案的名稱,例如 my-logging-targetLoggingTarget

    記錄管道會開始從專案的其他元件收集記錄。

您可以使用 Grafana 使用者介面或 Log Query API,查詢收集到的記錄。詳情請參閱「查詢及查看記錄」。

如果您使用 Grafana 查詢記錄,可以針對不同記錄層級使用內建的顏色編碼功能。如要進一步瞭解如何設定記錄層級值,請參閱 https://grafana.com/docs/grafana/latest/explore/logs-integration/

完成LoggingTarget規格

下列 YAML 檔案範例顯示 LoggingTarget 自訂資源的完整規格。如需欄位的完整說明,請參閱 API 參考說明文件

# Configures a log scraping job
apiVersion: logging.gdc.goog/v1
kind: LoggingTarget
metadata:
  # Choose a namespace that matches the namespace of the workload pods.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_TARGET_NAME
spec:
  # Choose a matching pattern that identifies the pods for this job.
  # Optional.
  # Relationship between different selectors: 'AND'
  selector:
    # The clusters to collect logs from.
    # The default configuration is to collect logs from all clusters.
    # The relationship between different clusters is an 'OR' relationship.
    # Optional
    matchClusters:
    - my-cluster
    - another-cluster

    # The pod name prefixes to collect logs from.
    # The logging platform scrapes all pods with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchPodNames:
      - my-pod-prefix
      - another-pod-prefix

    # The container name prefixes to collect logs from.
    # The logging platform scrapes all containers with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchContainerNames:
      - my-container-prefix
      - another-container-prefix

  # Choose the predefined parser for log entries.
  # Use parsers to map the log output to labels and extract fields.
  # Specify the log format.
  # Optional.
  # Options: klog_text, klog_json, klogr, gdch_json, json
  parser: klog_text

  # Specify an access level for log entries.
  # The default value is 'ao'.
  # Optional.
  # Options: ao, pa, io
  logAccessLevel: ao

  # Specify a service name to be applied as a label.
  # For user workloads consider this field as a workload name.
  # Required.
  serviceName: my-service-name

  # The additional static fields to apply to log entries.
  # The field is a key-value pair, where the field name is the key and
  # the field value is the value.
  # Optional.
  additionalFields:
    app: workload2
    key: value

更改下列內容:

  • PROJECT_NAMESPACE:您的專案命名空間。
  • LOGGING_TARGET_NAMELoggingTarget 定義檔案的名稱。