取樣器會將「檢查」診斷資料轉送至 Cobalt 遙測系統。
如果您的元件已透過 Inspect 進行檢測,只要變更設定檔,即可使用 Cobalt 遙測 (車隊監控)!如果您想輕鬆入門車隊監控 (不必整合新的 FIDL、不必使用新的資料模型,也不必在元件中處理複雜的流量控制),Sampler 就是您的最佳選擇!
有哪些好處?
Sampler 簡化了全機群監控的複雜度,可將監控資料納入每個元件的偵錯工具包。
集中式資料模型
許多開發人員認為,維護兩個不同的資料模型 (一個用於裝置端或當機報告偵錯等用途,另一個用於車隊監控等用途) 相當麻煩。
有了 Sampler,單一診斷資料模型 (檢查) 就能做為所有診斷資料分支的來源。
避免直接整合的複雜性
有些元件 (例如驅動程式) 的工作負載對系統至關重要,因此要找出「適當時間」執行診斷報告等非必要工作,可能相當複雜。將取樣作業集中到 Sampler 後,我們就能將工作卸載到可在非尖峰使用者負載期間執行的程式。即使元件未提供系統關鍵服務,與 Sampler 整合也能讓 Fuchsia 更健全,因為這樣一來,取樣排程就能更完善。
直接與 Cobalt 整合時,元件作者必須將流量控制視為用戶端,向 Cobalt 裝置端轉送器傳送要求。Sampler 內含隱含的流程控制,因此您可以專心上傳常見的指標類型,不必新增服務依附元件。
開始使用
- 請務必使用 ComponentInspector 或 inspect_runtime 提供檢查功能。
- 註冊要將 Inspect 指標轉換成的 Cobalt 指標。
- 建立 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 中繼資料。每個樣本週期都會使用第一個符合資料的選取器。
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。
metric_id
與您在 Cobalt yaml 檔案中註冊指標時使用的 ID 相同。event_codes
是在 Cobalt 指標註冊中指定的維度值清單。以 FVM 來說,每個指標都有對應於其分割區類型的單一維度值。
注意:取樣器設定中的維度值順序,必須與在 YAML 定義中宣告維度的順序一致。
柔和轉場效果
設定中的 "selector"
欄位可以採用選取器清單,而非單一選取器。在這種情況下,系統會在每個樣本週期使用第一個符合任何資料的選取器。
這項行為支援將指標從一個選取器轉換至另一個選取器。