關於應用程式專屬標籤
應用程式專屬標籤是指插入記錄、指標或追蹤資料中的標籤或屬性。這些標籤會識別產生資料的服務或工作負載。您可以像使用其他標籤一樣,使用應用程式專屬標籤。舉例來說,您可以依應用程式 ID 篩選資料。支援的基礎架構產生的遙測資料會自動包含這些標籤。透過檢測,應用程式寫入的指標和追蹤記錄可以包含這些標籤。
在本節中,請將 a.b.{x,y} 解讀為 a.b.x 和 a.b.y。
您在應用程式中加入的插碼指標資料可能包含下列指標標籤:
metric.labels.apphub_application_{container,id,location}metric.labels.apphub_workload_{criticality_type,environment_type,id}
您新增至應用程式的檢測工具所產生的 Trace 時距,可包含下列資源屬性:
gcp.apphub.application.{container,id,location}gcp.apphub.{workload,service}.{criticality_type,environment_type,id}
關於 OpenTelemetry HTTP 伺服器指標
對於在 Google Kubernetes Engine 上執行的工作負載,沒有任何系統指標可回報流量層級、伺服器錯誤率或 HTTP 要求的延遲時間。不過,這些黃金信號的值可以從 http.server.request.duration 衍生而來,這是 OpenTelemetry HTTP 用戶端程式庫自動收集的指標。
googlemanagedprometheus 匯出工具會將 http.server.request.duration OpenTelemetry 指標轉換為 Prometheus 指標,並具備下列屬性:
- 名稱:
prometheus/http_server_request_duration_seconds/histogram - 指標:
prometheus.googleapis.com/http_server_request_duration_seconds/histogram - 資源類型:
prometheus_target - 單位:
s - 類型:
CUMULATIVE - 值類型:
DISTRIBUTION
如果 Google Cloud 專案包含 http_server_request_duration_seconds 指標,應用程式監控資訊主頁就會顯示流量層級、伺服器錯誤率和 HTTP 要求延遲時間。
如要瞭解如何設定應用程式以匯出 http_server_request_duration_seconds 指標,請參閱本文的「在 Kubernetes 上使用 OpenTelemetry」一節。
在指標資料中新增應用程式標籤
Google Cloud Observability 會比較附加至傳送至專案的 Prometheus 指標的屬性,以及從 App Hub API 傳回的資料,嘗試找出 Prometheus 指標的來源。本節的其餘部分會列出相關設定,讓 Google Cloud Observability 識別 App Hub 應用程式。
在 Kubernetes 上使用 OpenTelemetry
如要讓 Google Cloud 可觀測性將應用程式標籤附加至應用程式工作負載產生的指標資料 (這些工作負載在 Google Kubernetes Engine 中執行),請按照下列步驟操作:
使用 OpenTelemetry 檢測應用程式。
部署 Google 建立的收集器或 OpenTelemetry 收集器,並按照下列方式設定收集器:
- 使用
googlemanagedprometheus匯出工具匯出指標資料。 - 設定
k8sattributes處理器,從環境中擷取中繼資料,例如namespace。 - 設定
transform/collision處理器,以設定project_id、location、cluster和namespace屬性。 - 設定
transform/aco-gke處理器,填入top_level_controller_name和top_level_controller_type標籤。
如需範例,請參閱
otlp-k8s-ingest/config/collector.yaml,這是 Google 建構的 Collector 設定檔。如要進一步瞭解這個收集器,請參閱「在 GKE 上部署 Google 建構的 OpenTelemetry 收集器」。- 使用
在 App Hub 註冊應用程式的工作負載。
在 GKE 上使用 Google Cloud Managed Service for Prometheus
如要讓 Google Cloud Observability 將應用程式標籤附加至應用程式工作負載產生的指標資料 (這些工作負載在 Google Kubernetes Engine 叢集上執行),請按照下列步驟操作:
在版本至少為
1.32.1-gke.1439000的 Google Kubernetes Engine 叢集上部署工作負載。在 App Hub 註冊應用程式的工作負載。
Google Cloud Managed Service for Prometheus 會透過服務探索中繼資料探索應用程式標籤的值,然後將 top_level_controller_{name,type} 標籤新增至 targetLabels.metadata。在指標擷取期間,Google Cloud Observability 會使用 top_level_controller_{name,type} 標籤和 App Hub API 識別您的 App Hub 應用程式,並在指標資料中加入適當的標籤。
使用 Cloud Run
如要讓 Google Cloud 可觀測性將應用程式標籤附加至 Cloud Run 工作負載產生的指標資料,請完成下列步驟:
使用 OpenTelemetry 或 Cloud Run 適用的 Managed Service for Prometheus 補充資訊,檢測應用程式。如要瞭解這些方法,請參閱下列文件:
在 App Hub 註冊應用程式的工作負載。
驗證指標標籤
如要確認應用程式是否將 Prometheus 指標傳送至專案,請執行下列操作:
-
確認應用程式是否將 Prometheus 指標傳送至專案:
-
前往 Google Cloud 控制台的 leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
- 在「指標」元素中,展開「選取指標」選單,
在篩選列中輸入
Prometheus Target, 然後使用子選單選取特定資源類型和指標:- 在「Active resources」(有效資源) 選單中,選取「Prometheus Target」(Prometheus 目標)。
- 如要選取指標,請使用「使用中的指標類別」和「使用中的指標」選單。
- 按一下「套用」。
如要新增篩選器,從查詢結果中移除時間序列,請使用「Filter」元素。
- 設定資料的顯示方式。
如要查看標籤,請展開「篩選器」選單。 「篩選器」中的每個項目都對應一個標籤。
如要進一步瞭解如何設定圖表,請參閱「使用 Metrics Explorer 時選取指標」。
如果沒有看到任何 Prometheus 指標,請檢查設定。
-
如果 Prometheus 指標不含應用程式標籤,請執行下列操作:
確認您已向 App Hub 註冊工作負載或服務。
檢查記錄檔,判斷是否有任何錯誤。
舉例來說,如果您部署 OpenTelemetry Collector 或 Google 建構的 Collector,並在 Google Kubernetes Engine 上執行,則可能需要執行下列操作:
-
前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Kubernetes Engine」的結果。
- 選取收集器部署作業,然後選取「記錄」分頁標籤。
-
如果您使用的是 OpenTelemetry Collector 或 Google 建立的 Collector,請檢查 Collector 的設定。收集者必須執行下列操作:
- 使用
googlemanagedprometheus匯出工具匯出指標資料。 - 設定
k8sattributes處理器,從環境中擷取中繼資料,例如namespace。 - 設定
transform/collision處理器,以設定project_id、location、cluster和namespace屬性。 - 設定
transform/aco-gke處理器,填入top_level_controller_name和top_level_controller_type標籤。
如需範例,請參閱 Google 建構的 Collector 設定檔:
otlp-k8s-ingest/config/collector.yaml。- 使用
在追蹤範圍中新增應用程式屬性
您未設定應用程式,導致應用程式專屬屬性未附加至傳送至 Google Cloud 專案的範圍。Google Cloud Observability 會改用 OpenTelemetry 資源屬性和 App Hub API,找出與範圍相關聯的 App Hub 應用程式,然後在儲存範圍前新增應用程式專屬屬性。
如要讓 Google Cloud Observability 將應用程式專屬的資源屬性附加至應用程式服務和工作負載產生的追蹤資料,請完成下列所有步驟:
使用 OpenTelemetry 檢測應用程式,並設定匯出工具,將追蹤記錄資料傳送至遙測 (OTLP) API 端點。
建議您以收集器為準匯出資料。下列文件說明收集器,這些收集器會將所有必要屬性附加至範圍資料:
- 在 Google Kubernetes Engine 上部署 Google 建構的 OpenTelemetry Collector。
- 在 Cloud Run 上部署 Google 建構的 OpenTelemetry 收集器。
- 在 Container-Optimized OS 上部署 OpenTelemetry Collector。
如果您未使用上述任一收集器,則必須設定檢測或收集器,才能附加所有必要屬性。
在支援的基礎架構上部署服務和工作負載。
透過 App Hub 註冊服務和工作負載。
如要進一步瞭解這些屬性,請參閱「Google Cloud App Hub 語意慣例」。
必要屬性
本節適用於未採用建議收集器的設定。舉例來說,您可能想自行編寫收集器,或直接匯出追蹤資料。
用於識別專案和資源位置的屬性
設定下列屬性:
cloud.provider:設為"gcp"。cloud.account.id:設為您的專案 ID。cloud.availability_zone或cloud.region:設為資源所在的可用區或區域。你可以同時設定這兩項屬性。
資源偵測工具可協助您設定先前的屬性:
resourcedetectionprocessor- 前往: Google Cloud 資源偵測器
- Java:
opentelemetry-java-contrib/gcp-resources - Node.js:
resource-detector-gcp - Python:
opentelemetry-resourcedetector-gcp
Google Kubernetes Engine 工作負載的屬性
如果是 Google Kubernetes Engine 工作負載,請設定收集器或檢測工具,以便執行下列操作:
- 從環境中擷取中繼資料,例如
namespace。 - 從
k8sattributes處理器擷取相關中繼資料。 - 設定
project_id、location、cluster和namespace屬性。 - 設定
top_level_controller_name和top_level_controller_type標籤。
如需以收集器為基礎的範例,請參閱 otlp-k8s-ingest/config/collector.yaml。該收集器會使用 k8sattributesprocessor 處理器。
VM 工作負載的屬性
如果您在 VM 上部署應用程式,則該 VM 必須與代管執行個體群組 (MIG) 建立關聯。你還必須附加下列屬性:
gcp.gce.instance_group_manager.namegcp.gce.instance_group_manager.region或gcp.gce.instance_group_manager.zone