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

您可以檢測 App Hub 應用程式,讓 Google Cloud Observability 將應用程式專屬標籤附加至應用程式產生的指標和追蹤記錄資料。對於在 Google Kubernetes Engine 上執行的工作負載,您也可以匯出 OpenTelemetry HTTP 伺服器指標,讓 Application Monitoring 用於回報 HTTP 要求的流量層級、伺服器錯誤率和延遲時間。

關於應用程式專屬標籤

應用程式專屬標籤是指插入記錄、指標或追蹤資料的標籤或屬性。這些標籤會識別產生資料的服務或工作負載。您可以像使用其他標籤一樣,使用應用程式專屬標籤。例如,您可以依應用程式 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}

您在應用程式中新增檢測功能後,產生的追蹤記錄 span 可能會包含下列資源屬性:

  • 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指標,Application Monitoring 資訊主頁就會顯示 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 Observability 將應用程式標籤附加至應用程式工作負載 (在 Google Kubernetes Engine 中執行) 產生的指標資料,請按照下列步驟操作:

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

  2. 部署 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 建構的收集器設定檔。如要進一步瞭解這個收集器,請參閱「在 GKE 上部署 Google 建構的 OpenTelemetry 收集器」。

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

在 GKE 使用 Google Cloud Managed Service for Prometheus

如要讓 Google Cloud Observability 將應用程式標籤附加至應用程式工作負載 (在 Google Kubernetes Engine 叢集上執行) 產生的指標資料,請按照下列步驟操作:

  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. 在「Metric」(指標) 元素中,展開「Select a metric」(選取指標) 選單,在篩選列中輸入 Prometheus Target,然後使用子選單選取特定資源類型和指標:
      1. 在「Active resources」(使用中的資源) 選單中,選取「Prometheus Target」(Prometheus 目標)。
      2. 如要選取指標,請使用「Active metric categories」(使用中的指標類別) 和「Active metrics」(使用中的指標) 選單。
      3. 按一下「套用」。
    4. 如要新增篩選器,從查詢結果中移除時間序列,請使用「Filter」(篩選器) 元素。

    5. 設定資料的查看方式。

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

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

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

如果 Prometheus 指標不含應用程式標籤,請按照下列步驟操作:

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

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

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

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

      前往「Workloads」(工作負載)

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

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

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

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

將應用程式屬性新增至追蹤記錄 span

您不需檢測應用程式,即可將應用程式專屬屬性附加至傳送至 Google Cloud 專案的 span。Google Cloud Observability 會改用 OpenTelemetry 資源屬性和 App Hub API,找出與 Span 相關聯的 App Hub 應用程式,然後在儲存 Span 前,新增應用程式專屬屬性。

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

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

必要屬性

本節適用於未使用建議收集器的設定。舉例來說,您可能想自行編寫收集器,或直接匯出追蹤記錄資料。

用於識別專案和資源位置的屬性

設定下列屬性:

  • cloud.provider:設為 "gcp"。
  • cloud.account.id:設為您的專案 ID。
  • cloud.availability_zone 或 cloud.region:設為資源所在的可用區或區域。您可以同時設定這兩項屬性。

資源偵測工具可協助您設定上述屬性:

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.name
  • gcp.gce.instance_group_manager.region或gcp.gce.instance_group_manager.zone