Google Cloud 為 Rust 應用程式提供強大的監控、記錄與診斷功能。
Rust 用戶端程式庫會檢測追蹤記錄、指標和記錄資料。這項插碼功能為選擇性,您必須明確啟用。本文件說明可用的信號,以及如何啟用這些信號。
可用的信號
Rust 用戶端程式庫會產生下列信號:
- 每個邏輯用戶端要求都有
INFO範圍。通常用戶端結構體中的單一方法呼叫會取得這類範圍 (例如,在SecretManagerService用戶端上呼叫access_secret_version)。 - 直方圖指標,用於測量每個邏輯用戶端要求的經過時間。主要指標為
gcp.client.request.duration。 - 每個失敗的邏輯用戶端要求都會有
WARN記錄。 INFO跨度,適用於每個低階 RPC 嘗試。通常,用戶端結構體中的單一方法會取得一個這類時距,但如果程式庫必須重試遠端程序呼叫 (RPC),則可能會取得更多時距。DEBUG記錄,瞭解每次失敗的低階嘗試。
這些時距和記錄會遵循 OpenTelemetry 語意慣例,並包含額外的Google Cloud 屬性。跨度和記錄都應適用於生產監控。
信號包括標準 OpenTelemetry 屬性 (例如 http.response.status_code 和 rpc.system.name) 和 Google Cloud專屬的自訂屬性,可能包括下列屬性和類似屬性:
gcp.client.service:服務名稱 (例如pubsub或storage)。gcp.client.repo:用戶端程式庫存放區 (例如googleapis/google-cloud-rust)。gcp.client.version:用戶端程式庫版本。gcp.client.artifact:特定模組路徑 (例如google-cloud-secretmanager)。gcp.resource.destination.id:要執行動作的資源 ID。gcp.errors.domain:可採取行動的錯誤記錄的錯誤網域。gcp.errors.metadata.<key>:失敗要求的其他錯誤中繼資料鍵 (已扁平化)。
如需標準屬性的完整清單,請參閱 OpenTelemetry HTTP 和 gRPC 語意慣例。
程式庫也會為每個要求提供 DEBUG 範圍。包括完整要求主體、成功要求的回應主體,以及失敗要求的完整錯誤訊息和詳細資料。
在生產環境中啟用這些要求和回應之前,請先考量內容,因為要求或回應可能包含敏感資料。
這些 DEBUG 時距會使用用戶端程式庫 Crate,然後是 ::tracing 做為目標 (例如 google_cloud_secretmanager_v1::tracing),並使用方法名稱做為時距名稱 (例如 access_secret_version)。您可以透過名稱、目標或兩者來設定篩選器。
啟用遙測功能
為保護機密資料,遙測信號預設為停用。
在 Rust 中,您必須設定用戶端來發出追蹤記錄、指標和記錄檔,並設定訂閱者和匯出工具,將這些信號傳送至外部服務。
如要設定用戶端,您可以設定下列環境變數:
export GOOGLE_CLOUD_RUST_LOGGING=true
或者,您也可以在使用用戶端建構工具的 .with_tracing() 方法建構用戶端時,透過程式明確啟用追蹤功能:
use google_cloud_secretmanager_v1::client::SecretManagerService;
let client = SecretManagerService::builder()
.with_tracing()
.build()
.await?;
追蹤內容傳播
即使未使用 .with_tracing() 明確啟用追蹤記錄產生功能,Rust 用戶端程式庫也會自動將有效追蹤記錄內容傳播至Google Cloud 服務。
使用 tracing-opentelemetry 或 opentelemetry Crate 為用戶端程式庫提供追蹤內容。
匯出遙測資料
在用戶端程式庫中啟用遙測功能後,您必須設定應用程式,才能收集這項資料並匯出至可觀測性服務。Rust 用戶端程式庫原生使用 tracing 生態系統。
追蹤
如要將 Google Cloud 用戶端程式庫產生的 tracing 範圍匯出至 OpenTelemetry,您必須在應用程式中設定 Subscriber,將資料導向 OpenTelemetry 匯出工具 (例如 OTLP)。
使用 tracing-opentelemetry 和 opentelemetry-otlp Crate 設定匯出工具: