關於檢測方法
使用 OpenTelemetry 收集器時,您會透過 SDK 和 SDK 的 OTLP 內建匯出工具檢測應用程式。這項檢測不限於特定供應商。您也會部署 OpenTelemetry 收集器,從程序內匯出工具接收遙測資料,然後將該資料匯出至 Google Cloud 專案。如要進一步瞭解收集器,請參閱「Google 建構的 OpenTelemetry 收集器」。
如果環境支援使用收集器,建議您使用 OpenTelemetry 收集器匯出遙測資料。在某些環境中,您必須使用程序內匯出工具,直接將資料傳送至Google Cloud 專案。如要瞭解程序內檢測,請參閱「從 Trace 匯出工具遷移至 OTLP 端點」。
如要進一步瞭解檢測,請參閱下列文件:
關於手動和免程式碼檢測
對於這種語言,OpenTelemetry 將無程式碼檢測定義為從程式庫和框架收集遙測資料,而不變更程式碼的做法。不過,您必須安裝模組並設定環境變數。
本文不說明無程式碼檢測。如需該主題的相關資訊,請參閱「Python 零程式碼檢測」。
如需一般資訊,請參閱「OpenTelemetry Instrumentation for Python」。
事前準備
- 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時不需要特定 IAM 角色,只要您獲派某個專案的角色,即可選取該專案。
-
建立專案:如要建立專案,您必須具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 Cloud Logging、Cloud Monitoring、Cloud Trace 和 Telemetry API (如有任何 API 尚未啟用):
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「Service Usage 管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable logging.googleapis.com
monitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com -
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時不需要特定 IAM 角色,只要您獲派某個專案的角色,即可選取該專案。
-
建立專案:如要建立專案,您必須具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 Cloud Logging、Cloud Monitoring、Cloud Trace 和 Telemetry API (如有任何 API 尚未啟用):
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「Service Usage 管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable logging.googleapis.com
monitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com -
如要取得讓範例應用程式寫入記錄、指標和追蹤記錄資料所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的記錄檔寫入者 (
roles/logging.logWriter) - 專案的 Monitoring 指標寫入者 (
roles/monitoring.metricWriter) - 專案的 Cloud 遙測資料追蹤記錄寫入者 (
roles/telemetry.tracesWriter) - 配額專案的服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer)
如果您在 Cloud Shell、 Google Cloud 資源或本機開發環境中執行範例,這些權限就足夠。如要瞭解如何設定配額專案,請參閱「設定配額專案」。
如要取得查看記錄、指標和追蹤記錄資料所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- 記錄檢視器 (
roles/logging.viewer) - Monitoring 檢視者 (
roles/monitoring.viewer) - Cloud Trace 使用者 (
roles/cloudtrace.user)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
- 專案的記錄檔寫入者 (
檢測應用程式,收集追蹤記錄、指標和記錄
如要檢測應用程式,收集追蹤記錄和指標資料,並將結構化 JSON 記錄寫入標準輸出內容,請按照下列步驟操作:
設定 OpenTelemetry
這個範例應用程式已設為使用 OpenTelemetry Python SDK,透過 OTLP 通訊協定匯出追蹤記錄和指標。根據預設,OpenTelemetry Python SDK 會使用 W3C 追蹤記錄相關資訊格式傳播追蹤記錄相關資訊,確保追蹤記錄中的 span 具有正確的父子關係。
下列程式碼範例說明如何使用 Python 模組設定 OpenTelemetry。如要查看完整範例,請在範例的工具列中選取 GitHub 標誌。
Flask 應用程式會依據 Flask 的「部署至正式環境」指南中的建議,使用 Gunicorn 處理 HTTP 要求。Gunicorn 會在獨立工作站程序中啟動多個應用程式副本,以提高處理量。為確保工作站程序中的指標不會互相衝突,建議每個工作站程序都為 service.instance.id 資源屬性設定不重複的值。其中一種做法是在 service.instance.id 中加入程序 ID。詳情請參閱「時間序列衝突」。
如要瞭解詳情和設定選項,請參閱「OpenTelemetry Python 檢測」。
設定結構化記錄
如要寫入連結至追蹤記錄的結構化記錄,請將應用程式設為將 JSON 格式的記錄輸出至標準輸出內容,並使用含有追蹤記錄資訊的索引鍵。下列程式碼範例說明如何設定標準 logging 程式庫,使用 python-json-logger 程式庫輸出 JSON 結構化記錄,以及如何使用 opentelemetry-instrumentation-logging 套件納入追蹤資訊。
上述設定會從記錄訊息中擷取有效 Span 的相關資訊,然後將該資訊做為屬性新增至 JSON 結構化記錄。接著,您可以使用這些屬性,將記錄與追蹤記錄建立關聯:
logging.googleapis.com/trace:與記錄項目相關聯的追蹤記錄資源名稱。logging.googleapis.com/spanId:與記錄項目相關聯的追蹤記錄中的 span ID。logging.googleapis.com/trace_sampled:這個欄位的值必須是true或false。
如要進一步瞭解這些欄位,請參閱 LogEntry 結構。
執行已設定收集遙測資料的範例應用程式
範例應用程式中的檢測作業使用不限供應商的格式,例如記錄資料使用 JSON,指標和追蹤記錄資料則使用 OTLP。範例應用程式也會使用 Flask 提供 HTTP 要求,並使用 requests 程式庫發出 HTTP 要求。OpenTelemetry Collector 會使用 Google 匯出工具,將記錄和指標資料傳送至專案。這項服務會使用 Telemetry API (採用 OTLP),將追蹤記錄資料傳送至專案。
為產生 HTTP 用戶端和伺服器的指標和追蹤記錄,範例應用程式會安裝 opentelemetry-instrumentation-flask 和 opentelemetry-instrumentation-requests 檢測程式庫:
這個應用程式有兩個端點:
/multi端點由multi函式處理。應用程式中的負載產生器會向/multi端點發出要求。這個端點收到要求後,會向本機伺服器上的/single端點傳送三到七個要求。/single端點由single函式處理。這個端點收到要求後,會先暫停一小段時間,然後傳回字串。
下載及部署應用程式
如要執行範例,請按照下列步驟操作:
-
在 Google Cloud 控制台啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
複製存放區:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-samples前往範例目錄:
cd opentelemetry-samples/python/instrumentation-quickstart建構並執行範例:
docker compose up --abort-on-container-exit如果不是在 Cloud Shell 執行,請執行應用程式,並將
GOOGLE_APPLICATION_CREDENTIALS環境變數指向憑證檔案。應用程式預設憑證會在$HOME/.config/gcloud/application_default_credentials.json提供憑證檔案。# Set environment variables export GOOGLE_CLOUD_PROJECT="PROJECT_ID" export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcloud/application_default_credentials.json" export USERID="$(id -u)" # Run docker compose -f docker-compose.yaml -f docker-compose.creds.yaml up --abort-on-container-exit
查看指標
範例應用程式中的 OpenTelemetry 檢測會產生 Prometheus 指標,您可以使用 Metrics Explorer 查看:
Prometheus/http_server_duration_milliseconds/histogram會記錄伺服器要求的時間長度,並將結果儲存在直方圖中。Prometheus/http_client_duration_milliseconds/histogram會記錄用戶端要求的時間長度,並將結果儲存在直方圖中。
-
前往 Google Cloud 控制台的leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。如果是 App Hub 設定,請選取 App Hub 主專案,或已啟用應用程式管理功能的資料夾管理專案。
- 在「Metric」(指標) 元素中,展開「Select a metric」(選取指標) 選單,在篩選列中輸入
http_server,然後使用子選單選取特定資源類型和指標:- 在「Active resources」(使用中的資源) 選單中,選取「Prometheus Target」(Prometheus 目標)。
- 在「使用中的指標類別」選單中,選取「Http」。
- 在「Active metrics」(使用中的指標) 選單中,選取指標。
- 按一下「套用」。
如要新增篩選器,從查詢結果中移除時間序列,請使用「Filter」(篩選器) 元素。
- 設定資料的查看方式。
如果指標的測量結果是累計值,Metrics Explorer 會自動依據校正週期正規化測量資料,因此圖表會顯示比率。詳情請參閱「種類、類型和轉換」。
測量整數或雙精度值時 (例如使用兩個
counter指標),Metrics Explorer 會自動加總所有時間序列。如要查看/multi和/singleHTTP 路徑的資料,請將「Aggregation」(匯總) 項目的第一個選單設為「None」(無)。如要進一步瞭解如何設定圖表,請參閱「在使用 Metrics Explorer 時選取指標」。
查看追蹤記錄
追蹤記錄資料可能需要幾分鐘才會顯示。例如,當專案收到追蹤記錄資料時,Google Cloud Observability 可能需要建立資料庫來儲存該資料。建立資料庫可能需要幾分鐘,這段期間內無法查看任何追蹤記錄資料。
如要查看追蹤記錄資料,請按照下列步驟操作:
-
前往 Google Cloud 控制台的
「Trace Explorer」頁面:前往「Trace explorer」(Trace 探索工具)
您也可以透過搜尋列找到這個頁面。
- 在頁面的表格部分,選取 Span 名稱為
/multi的資料列。 在「Trace details」(追蹤記錄詳細資料) 面板的甘特圖中,選取標示為
/multi的 span。畫面上會開啟一個面板,顯示 HTTP 要求的相關資訊。這些詳細資料包括方法、狀態碼、位元組數,以及呼叫端的使用者代理程式。
如要查看與這個追蹤記錄相關聯的記錄,請選取「Logs & Events」(記錄和事件) 分頁標籤。
這個分頁會顯示個別記錄。如要查看記錄項目的詳細資料,請展開記錄項目。您也可以點選「View Logs」(查看記錄),並使用 Logs Explorer 查看記錄。
如要進一步瞭解如何使用「Trace Explorer」頁面,請參閱「尋找及探索追蹤記錄」。
查看記錄檔
您可以在 Logs Explorer 中檢查記錄檔,也可以查看相關聯的追蹤記錄 (如有)。
-
前往 Google Cloud 控制台的 「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
找出說明為「
handle /multi request」的記錄。如要查看記錄詳細資料,請展開記錄項目。
在含有「handle /multi request」訊息的記錄項目上,按一下
「Traces」(追蹤記錄),然後選取「View trace details」(查看追蹤記錄詳細資料)。「Trace details」(追蹤記錄詳細資料) 面板隨即開啟,並顯示所選追蹤記錄。
記錄資料可能會比追蹤資料早幾分鐘顯示。如果透過 ID 搜尋追蹤記錄或按照這項工作的步驟操作時,在查看追蹤記錄資料時發生錯誤,請稍候一兩分鐘,然後再重試。
如要進一步瞭解如何使用 Logs Explorer,請參閱「使用 Logs Explorer 查看記錄檔」。