檢測應用程式以進行應用程式監控

本文說明如何設定 App Hub 應用程式,讓應用程式產生的指標和追蹤資料包含應用程式專屬標籤。本文也會說明如何讓應用程式匯出指標,供應用程式監控服務用來回報在 Google Kubernetes Engine 上執行的 HTTP 要求工作負載的流量層級、伺服器錯誤率或延遲時間。

關於應用程式專屬標籤

應用程式專屬標籤是指插入記錄、指標或追蹤資料的標籤或屬性。這些標籤會識別產生資料的服務或工作負載。您可以像使用其他標籤一樣,使用應用程式專屬標籤。舉例來說,您可以依應用程式 ID 篩選資料。支援的基礎架構產生的遙測資料會自動包含這些標籤。透過檢測,應用程式寫入的指標和追蹤記錄可以包含這些標籤。

在本節中,請將 a.b.{x,y} 解讀為 a.b.xa.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 指標,OOTB 資訊主頁就會顯示 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 中執行),請按照下列步驟操作:

  1. 使用 OpenTelemetry 檢測應用程式。

  2. 部署 Google 建立的收集器或 OpenTelemetry Collector,然後按照下列步驟設定收集器:

    • 使用 googlemanagedprometheus 匯出工具匯出指標資料。
    • 設定 k8sattributes 處理器,從環境中擷取中繼資料,例如 namespace
    • 設定 transform/collision 處理器,以設定 project_idlocationclusternamespace 屬性。
    • 設定 transform/aco-gke 處理器,填入 top_level_controller_nametop_level_controller_type 標籤。

    如需範例,請參閱 otlp-k8s-ingest/config/collector.yaml,這是 Google 建構的 Collector 設定檔。如要進一步瞭解這個收集器,請參閱「在 GKE 上部署 Google 建構的 OpenTelemetry 收集器」。

  3. App Hub 註冊應用程式的工作負載。

在 GKE 上使用 Google Cloud Managed Service for Prometheus

如要讓 Google Cloud Observability 將應用程式標籤附加至應用程式工作負載產生的指標資料,請按照下列步驟操作:

  1. 使用代管式集合的 Google Cloud Managed Service for Prometheus

  2. 在版本至少為 1.32.1-gke.1439000 的 Google Kubernetes Engine 叢集上部署工作負載。

  3. 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 Observability 將應用程式標籤附加至 Cloud Run 工作負載產生的指標資料,請執行下列操作:

  1. 使用 OpenTelemetry 或 Cloud Run 適用的 Managed Service for Prometheus 補充資訊,檢測應用程式。如要瞭解這些方法,請參閱下列文件:

  2. App Hub 註冊應用程式的工作負載。

驗證指標標籤

如要確認應用程式是否將 Prometheus 指標傳送至專案,請執行下列操作:

  1. 確認應用程式是否將 Prometheus 指標傳送至專案:
    1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

      前往 Metrics Explorer

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

    2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾的管理專案。
    3. 在「指標」元素中,展開「選取指標」選單, 在篩選列中輸入 Prometheus Target, 然後使用子選單選取特定資源類型和指標:
      1. 在「Active resources」(有效資源) 選單中,選取「Prometheus Target」(Prometheus 目標)
      2. 如要選取指標,請使用「使用中的指標類別」和「使用中的指標」選單。
      3. 按一下 [套用]
    4. 如要新增篩選器,從查詢結果中移除時間序列,請使用「Filter」元素

    5. 設定資料的顯示方式。

      如要查看標籤,請展開「篩選器」選單。 「篩選器」中的每個項目都對應一個標籤。

      如要進一步瞭解如何設定圖表,請參閱「使用 Metrics Explorer 時選取指標」。

    如果沒有看到任何 Prometheus 指標,請檢查設定。

如果 Prometheus 指標不含應用程式標籤,請執行下列操作:

  1. 確認您已向 App Hub 註冊工作負載或服務。

  2. 檢查記錄,判斷是否有任何錯誤。

    舉例來說,如果您部署 OpenTelemetry Collector 或 Google 建構的 Collector,並在 Google Kubernetes Engine 上執行,則可能需要執行下列操作:

    1. 前往 Google Cloud 控制台的「Workloads」(工作負載) 頁面:

      前往「Workloads」(工作負載)

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Kubernetes Engine」的結果

    2. 選取收集器部署作業,然後選取「記錄」分頁標籤。
  3. 如果您使用的是 OpenTelemetry Collector 或 Google 建立的 Collector,請檢查 Collector 的設定。收集器必須執行下列操作:

    • 使用 googlemanagedprometheus 匯出工具匯出指標資料。
    • 設定 k8sattributes 處理器,從環境中擷取中繼資料,例如 namespace
    • 設定 transform/collision 處理器,以設定 project_idlocationclusternamespace 屬性。
    • 設定 transform/aco-gke 處理器,填入 top_level_controller_nametop_level_controller_type 標籤。

    如需範例,請參閱 Google 建構的 Collector 設定檔: otlp-k8s-ingest/config/collector.yaml

在追蹤範圍中新增應用程式屬性

如要讓 Cloud Trace 將應用程式專屬的資源屬性附加至應用程式服務和工作負載產生的追蹤記錄資料,請執行下列操作:

  1. 透過 App Hub 註冊服務和工作負載。
  2. 使用 OpenTelemetry 檢測應用程式,並透過 Google Cloud OTLP 端點,將應用程式收集的追蹤記錄資料傳送至專案。
  3. 設定 OpenTelemetry Collector 或 Google 建立的 Collector,使匯出的時距資料包含 OpenTelemetry 資源屬性,用於識別應用程式使用的支援 Google Cloud 資源。資源屬性必須包含下列項目:

    • cloud.account.id
    • cloud.{availability_zone,region} 其中之一
    • 資源專屬屬性。舉例來說,如果是 Kubernetes 工作負載,跨度必須設有 k8s.cluster.namek8s.namespace 和 Kubernetes 部署類型。

    使用處理器,讓收集器將資源專屬屬性附加至跨度。詳情請參閱resourcedetectionprocessork8sattributesprocessor

    Google Cloud Observability 會使用上述資源屬性和 App Hub API,識別您的 App Hub 應用程式。系統識別應用程式後,就會將應用程式專屬屬性新增至追蹤資料。

如要進一步瞭解這些屬性,請參閱「Google Cloud App Hub 語意慣例」。