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

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

如果您的元件已透過 Inspect 進行檢測,只要變更設定檔,即可使用 Cobalt 遙測 (車隊監控)!如果您想輕鬆入門車隊監控 (不必整合新的 FIDL、不必使用新的資料模型,也不必在元件中處理複雜的流量控制),Sampler 就是您的最佳選擇!

有哪些好處?

Sampler 簡化了全機群監控的複雜度,可將監控資料納入每個元件的偵錯工具包。

集中式資料模型

許多開發人員認為,維護兩個不同的資料模型 (一個用於裝置端或當機報告偵錯等用途,另一個用於車隊監控等用途) 相當麻煩。

有了 Sampler,單一診斷資料模型 (檢查) 就能做為所有診斷資料分支的來源。

避免直接整合的複雜性

有些元件 (例如驅動程式) 的工作負載對系統至關重要,因此要找出「適當時間」執行診斷報告等非必要工作,可能相當複雜。將取樣作業集中到 Sampler 後,我們就能將工作卸載到可在非尖峰使用者負載期間執行的程式。即使元件未提供系統關鍵服務,與 Sampler 整合也能讓 Fuchsia 更健全,因為這樣一來,取樣排程就能更完善。

直接與 Cobalt 整合時,元件作者必須將流量控制視為用戶端,向 Cobalt 裝置端轉送器傳送要求。Sampler 內含隱含的流程控制,因此您可以專心上傳常見的指標類型,不必新增服務依附元件。

開始使用

  1. 請務必使用 ComponentInspectorinspect_runtime 提供檢查功能。
  2. 註冊要將 Inspect 指標轉換成的 Cobalt 指標
  3. 建立 Sampler 設定,定義從 Inspect 到 Cobalt 的轉換。查看現有設定檔

取樣器設定

請參考以下設定:

{
  "project_id": 3676913920,
  "poll_rate_sec": 3600,
  "metrics": [
    {
      "selector": "some/component:root/foo:bar",
      "metric_id": 3000,
      "metric_type": "Integer",
      "event_codes": [0]
    },
    {
      "selector": [
        "some/component:root:my_property",
        "some/other/component:root:my_property",
      ],
      "metric_id": 3000,
      "metric_type": "Integer",
      "event_codes": [1]
    }
  ]
}

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

接著,設定需要指標轉換清單。在這些設定中,用戶端會提供一或多個選取器,用於識別相關的檢查指標,以及代表用戶端轉送檢查作業所需的 Cobalt 中繼資料。每個樣本週期都會使用第一個符合資料的選取器。

  1. metric_type 是所要求的指標轉換類型。
    • 如果 Cobalt 指標的類型為 OCCURRENCE,用於追蹤數值匯總,請使用 metric_type Occurrence
    • 如果 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 定義中宣告維度的順序一致。

柔和轉場效果

設定中的 "selector" 欄位可以採用選取器清單,而非單一選取器。在這種情況下,系統會在每個樣本週期使用第一個符合任何資料的選取器。

這項行為支援將指標從一個選取器轉換至另一個選取器。