取樣器 - 診斷資料轉寄工具

取樣器會將檢查診斷資料轉送至 Cobalt 遙測系統。

如果您的元件已透過檢查功能檢測,則可只透過設定檔變更來使用 Cobalt 遙測 (機動監控)!如果您想使用少量裝置監控功能 (沒有新的 FIDL 整合服務、沒有新的資料模型,元件中沒有流程控制的複雜性),就很適合使用 Sampler!

我可以使用哪些服務?

Sampler 可簡化作業程序,讓您將機群監控作業納入每個元件的偵錯工具包。

集中式資料模型

許多開發人員發現,需要維護兩個獨立的資料模型,一個用於裝置端或當機報告偵錯等功能,另一個則用於機群監控等項目。

使用 Sampler 時,單一診斷資料模型 (檢查) 可以做為所有診斷資料分支版本的來源。

避免複雜的直接整合工作

對某些元件 (例如驅動程式) 而言,對於某些元件 (例如驅動程式),其工作負載非常重要,因為要找到「適當時間」來執行診斷報表這類非必要工作,可能會相當複雜。將取樣作業集中到 Sampler 之後,我們就可以將工作卸載至可在非尖峰使用者負載期間執行的程式。即使元件並未提供系統關鍵服務的元件,整合 Sampler 也有助於規劃更明智的取樣排程,讓 Fuchsia 更加健康。

與 Cobalt 直接整合需要元件作者將流量控制納入考量,做為用戶端向裝置端轉寄站傳送要求的考量。Sampler 中的流程控制是隱式的,因此您可以專注於上傳常見的指標類型,而不必新增服務依附元件。

踏出第一步

  1. 如果您是使用 V2 元件,請務必將 diagnostics 目錄公開給診斷平台
  2. 註冊您要將 Inspect 指標轉換為的Cobalt 指標
  3. 建立取樣器設定,定義從檢查到 Cobalt 的轉換。查看現有的設定檔

取樣器設定

我們會使用 FVM Integration 做為設定範例。

{
  "project_id": 3676913920,
  "poll_rate_sec": 3600,
  "metrics": [
    {
      "selector": "bootstrap/driver_manager:root/fvm/partitions/blobfs:total_slices_reserved",
      "metric_id": 3000,
      "metric_type": "Integer",
      "event_codes": [0]
    },
    {
      "selector": "bootstrap/driver_manager:root/fvm/partitions/minfs:total_slices_reserved",
      "metric_id": 3000,
      "metric_type": "Integer",
      "event_codes": [1]
    }
  ]
}

範例設定會指定頂層專案 ID,指定 Sampler 代你進行取樣和轉送的 Cobalt 用戶端。這也會指定頂層的輪詢_rate_seconds,不過在取樣器 v1.1 中,這個輪詢率會代表用戶端遷移至每個指標的設定。

接下來,設定需要指標轉換清單。在這些設定中,用戶端會提供識別相關檢查指標的選取器,以及代表用戶端轉送檢查作業所需的 Cobalt 中繼資料。

  1. metric_type 是要求的指標轉換類型。
    • 如果 Cobalt 指標的類型是 OCCURRENCE,請使用 metric_type Horrence 來追蹤數值匯總。
    • 如果 Cobalt 指標的類型是 INTEGER,用來追蹤原始整數 (例如 cpu_load、thermal_temp),請使用 metric_type Integer
    • 如果您的 Cobalt 指標類型是 INTEGER_HISTOGRAM,請使用 metric_type IntHistogram
    • 如果您的 Cobalt 指標類型是 STRING,請使用 metric_type String
  2. metric_id 與您在 Cobalt yaml 檔案中登錄指標時使用的 ID 相同。
  3. event_codes 是註冊 Cobalt 指標時指定的維度值清單。以 FVM 來說,每個指標都有與其分區類型對應的單一維度值。

注意:取樣器設定中維度值的順序必須與 yaml 定義中的維度宣告順序一致。