本文介紹 Google Kubernetes Engine (GKE) 適用的代管 OpenTelemetry,可讓您從 GKE 上執行的應用程式,將 OpenTelemetry Protocol (OTLP) 追蹤記錄、指標和記錄傳送至 Google Cloud Observability。代管 OpenTelemetry 是 Google Cloud 提供的唯一代管解決方案,可收集 GKE 上的追蹤記錄資料。
如要在 Google Kubernetes Engine (GKE) 中使用代管 OpenTelemetry,應用程式必須已完成檢測,才能使用 OpenTelemetry 協定產生信號。詳情請參閱「支援的工作負載」。
GKE 適用的代管 OpenTelemetry 包含兩個元件:
- 代管收集:代管收集器會在叢集內提供 OpenTelemetry Protocol 端點,做為工作負載傳送 OTLP 格式追蹤記錄、指標和記錄的目的地,不必管理收集器。
自動設定:名為
Instrumentation的自訂資源可自動設定 GKE 工作負載,產生並擷取相關的 OpenTelemetry 追蹤記錄、指標和記錄。這種做法支援 Agent Development Kit (ADK),以及多模態提示和回應資料。對於使用 OpenTelemetry SDK 且設定標準 OpenTelemetry 環境變數的工作負載,您可以使用
Instrumentation自訂資源。這個Instrumentation自訂資源instrumentations.telemetry.googleapis.com與 OpenTelemetry 運算子的Instrumentation資源不同。
如要瞭解如何使用 GKE 適用的代管 OpenTelemetry,請參閱「部署 GKE 適用的代管 OpenTelemetry」。
透過適用於 GKE 的代管 OpenTelemetry,您可以收集 OTLP 遙測資料,不必管理及操作 OpenTelemetry 收集器。自行執行收集器可能會產生額外費用,包括驗證、設定、升級和監控。不過,如需收集器層級的篩選和控制項,請改用 Google 打造的 OpenTelemetry Collector,而非這項代管服務。
OpenTelemetry 提供 API、程式庫和 SDK,可產生分散式追蹤記錄、指標和記錄,用於監控應用程式。如要進一步瞭解 OpenTelemetry,請參閱 OpenTelemetry 和 OpenTelemetry 通訊協定 (OTLP) 的說明文件。如要進一步瞭解如何產生及收集應用程式的執行階段行為資料,請參閱「檢測和可觀測性」。
適用於 GKE 的代管 OpenTelemetry 運作方式
GKE 適用的代管 OpenTelemetry 包含兩個元件:代管收集和自動設定。
代管型集合
代管集合會將代管 OpenTelemetry 收集器部署至叢集,提供叢集內 OTLP 端點。這個叢集內 OTLP 端點會接收 OTLP 格式的追蹤記錄、指標和記錄。如要接收工作負載的資料,必須將工作負載設定為將資料傳送至收集器。
代管收集器的端點為:
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318。
代管收集作業會將收集到的資料傳送至 Google Cloud Observability。然後在下列服務中使用這些資料:
您可以使用控制台或 gcloud CLI,為 GKE 叢集啟用代管收集器。如需操作說明,請參閱「在叢集中為 GKE 啟用代管 OpenTelemetry」。
自動設定
自動設定功能可讓 GKE 設定在 GKE 上執行的工作負載,將信號傳送至受管理收集器的端點。
您可以透過不同方法設定工作負載。自動設定會使用注入工作負載容器的環境變數,讓工作負載將信號傳送至受管理收集器。如要手動設定工作負載,可以使用其他方法。詳情請參閱「手動設定」。
使用自動設定時,您可以使用 Instrumentation 自訂資源定義設定。接著,GKE 會將環境變數 (例如 OTLP 匯出工具端點) 注入工作負載的容器。如果工作負載的容器有這些環境變數,工作負載執行時,OpenTelemetry 資料就會傳送至受管理收集器。
如果工作負載原生支援 OpenTelemetry,也就是使用 OpenTelemetry SDK,並透過標準 OpenTelemetry 環境變數設定,即可自動設定。詳情請參閱「支援的工作負載」。
如需使用自動設定功能設定應用程式的操作說明,請參閱「設定應用程式以使用 Managed OpenTelemetry 收集器」。
Instrumentation 自訂資源
您可以使用 Instrumentation 自訂資源執行下列操作:
- 指定要將環境變數注入所選 Pod 的容器,還是命名空間中的所有 Pod 容器。
- 控管收集的資料類型 (記錄、指標和追蹤記錄)。
- 控管指標資料傳送至代管收集器的頻率。
- 控制追蹤記錄資料的取樣率。
如要進一步瞭解如何使用 Instrumentation 自訂資源,請參閱「修改設定」。
自動插入環境變數
如要將 OpenTelemetry 環境變數自動注入 GKE 工作負載,您需要在叢集中設定 Instrumentation 物件。然後,當您在叢集中部署應用程式時,GKE 會注入變數。Instrumentation
部署應用程式並建立 Pod 時,叢集中必須有 Instrumentation 物件。如果您在建立 Instrumentation 物件前部署應用程式,則需要重新啟動應用程式的 Pod,才能觸發環境變數的自動插入作業。
環境變數
將工作負載部署至啟用自動設定的命名空間時,GKE 會將環境變數注入工作負載的容器。這些環境變數是來自 OpenTelemetry SDK 設定的 OpenTelemetry 變數。
下表列出 Managed OpenTelemetry for GKE 可注入的所有環境變數。注入容器的特定環境變數取決於 Instrumentation 自訂資源中的設定。
可自動注入容器的環境變數如下:
- OpenTelemetry 匯出工具端點。
OTEL_EXPORTER_OTLP_ENDPOINT:任何訊號類型的基準端點網址。這個端點一律指向叢集內受管理的 OpenTelemetry 收集器 HTTP 端點,用於記錄、指標和追蹤記錄。這個端點是:http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318。
- 追蹤記錄取樣率設定。
OTEL_TRACES_SAMPLER:將 SDK 用於取樣追蹤記錄的取樣器設為下列其中一項:- 在自訂資源中設定追蹤記錄取樣時。
parentbased_traceidratio parentbased_always_on是這個環境變數的預設值。如果未設定這個環境變數,或自訂資源中的環境變數為空值,系統就會使用這個預設值。
- 在自訂資源中設定追蹤記錄取樣時。
OTEL_TRACES_SAMPLER_ARG:指定追蹤記錄取樣比率 (介於 0.0 和 1.0 之間)。如果未在自訂資源中設定,則會使用 1.0。
- 連續兩次指標匯出作業開始之間的時間間隔。
OTEL_METRIC_EXPORT_INTERVAL:兩次匯出嘗試之間的間隔時間 (以毫秒為單位)。最小值為 5000,最大值為 300000,預設值為 30000。
- 依訊號類型停用 OTLP 遙測資料匯出功能。在
Instrumentation檔案中將tracer_provider、meter_provider或logger_provider設為null時,訊號匯出器會停用。OTEL_TRACES_EXPORTER:設為none時,會停用追蹤記錄匯出功能。預設值:otlp。OTEL_METRICS_EXPORTER:設為none時,會停用指標匯出功能。預設值:otlp。OTEL_LOGS_EXPORTER:設為none時,會停用記錄匯出功能。預設值為otlp。
- 識別 hostNetwork Pod,以便透過 OpenTelemetry Collector 的 Kubernetes 屬性處理器關聯中繼資料。
K8S_POD_UID:hostNetwork Pod 的 Pod UID,用於填入OTEL_RESOURCE_ATTRIBUTES環境變數中的k8s.pod.uid設定。OTEL_RESOURCE_ATTRIBUTES:這個值包含k8s.pod.uid=$(K8S_POD_UID),可讓 Kubernetes 屬性處理器將中繼資料 (例如k8s.namespace.name、k8s.deployment.name和k8s.node.name) 與 hostNetwork Pod 建立關聯。中繼資料和 hostNetwork Pod 建立關聯後,即可將擷取的中繼資料新增至範圍、指標和記錄,做為資源屬性。
- 提示詞和回覆。
OTEL_INSTRUMENTATION_GENAI_UPLOAD_FORMAT='jsonl':指示 OpenTelemetry 將 Cloud Storage 物件格式設為 JSON Lines。這個環境變數的值固定為jsonl。OTEL_INSTRUMENTATION_GENAI_COMPLETION_HOOK='upload':指示 OpenTelemetry 上傳提示詞和回應資料,而不是將這類內容嵌入追蹤範圍。上傳物件的參照會納入記錄項目。這個環境變數的值固定為upload。OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental':指示 OpenTelemetry 使用生成式 AI 的最新語意慣例。這個環境變數的值是固定的:gen_ai_latest_experimental。OTEL_INSTRUMENTATION_GENAI_UPLOAD_BASE_PATH:指定物件的路徑。例如:gs://STORAGE_BUCKET_NAME/PATH
手動設定
您可以透過不同方法,設定工作負載將信號傳送至受管理收集器的端點。如果手動設定工作負載,可以手動新增及修改環境變數,也可以使用其他方法,例如指令列標記。
我們不建議對相同工作負載同時使用手動和自動設定,因為自動設定可能會覆寫手動變更。這項組合可能會導致追蹤設定變更更加困難。
如要瞭解自動設定的詳細資訊,請參閱「自動設定」。
支援的工作負載
支援的工作負載是指使用 OpenTelemetry 收集應用程式執行階段行為資料的工作負載。如果工作負載使用 OpenTelemetry SDK,並透過標準 OpenTelemetry 環境變數設定,則會原生支援 OpenTelemetry。舉例來說,Agent Development Kit (ADK) 原生支援 OpenTelemetry。
如要進一步瞭解如何產生及收集應用程式的執行階段行為資料,請參閱「檢測和可觀測性」。
如果工作負載支援部分類型的 OTLP 資料,但不支援其他類型,則 GKE 適用的代管 OpenTelemetry 會收集 OTLP 資料。舉例來說,如果工作負載使用 OpenTelemetry SDK 實作追蹤記錄,但未將其用於記錄或指標,則 GKE 適用的代管 OpenTelemetry 不會收集記錄和指標資料。如要進一步瞭解如何控管要收集的資料類型,請參閱「選取要收集的信號類型」。
GKE Autopilot 合作夥伴的具備特殊權限工作負載不支援 OpenTelemetry 設定注入。
帳單
將遙測資料傳送至 Google Cloud時,系統會根據擷取量計費。指標費用會依據 Google Cloud Managed Service for Prometheus 定價計費,記錄費用會依據 Cloud Logging 定價計費,追蹤記錄費用則會依據 Cloud Trace 定價計費。
如要瞭解擷取追蹤記錄、記錄和 Google Cloud Managed Service for Prometheus 指標的相關費用,請參閱「Google Cloud Observability 定價」一文。
配額
使用 GKE 適用的 Managed OpenTelemetry 時,適用 Google Cloud Observability 服務的配額。詳情請參閱以下說明:
後續步驟
- 如要部署收集器,請參閱「為 GKE 部署代管 OpenTelemetry」。
- 如要自行部署代管 OpenTelemetry for GKE 的替代方案,請參閱「Google-Built OpenTelemetry Collector」。
- 如要瞭解如何設定 OpenTelemetry 檢測功能,從應用程式產生追蹤記錄、指標和記錄檔,請參閱下列文章:
- 使用 OpenTelemetry 將自訂追蹤記錄和指標新增至應用程式。