采样器会将 Inspect 诊断数据转发到 Cobalt 遥测系统。
如果您的组件使用 Inspect 进行了插桩测试,您可以使用 Cobalt 遥测 (舰队监控),只需更改配置文件即可!如果您希望轻松开始使用车队监控(无需进行新的 FIDL 集成,无需使用新的数据模型,组件中也不存在流控制复杂性),Sampler 就是您的理想之选!
我能获得什么?
采样器以降低复杂性的方法获取舰队范围的监控 集成到每个组件的调试工具包中。
集中式数据模型
许多开发者发现,必须维护两个单独的数据模型(一个用于设备端或崩溃报告调试等,另一个用于车队监控等)非常麻烦。
使用采样器时,可以将单个诊断数据模型 (Inspect) 作为数据源 。
避免直接集成的复杂性
对于某些组件(如驱动程序),它们的工作负载对系统至关重要,以至于 找到“正确的时间”执行诊断等非必要的工作 报告是一项复杂的工作。通过将抽样集中到 Sampler,我们能够将工作分流到可在非高峰用户负载期间运行的程序。即使组件不提供 与 Sampler 集成后,Fucsia 更加健康, 从而实现更明智的抽样时间安排。
与 Cobalt 直接集成需要组件作者考虑其流程 作为客户端向 Cobalt 设备端转发器发送请求。流控制在 Sampler 中是隐式的,因此您可以更加专注于上传常见的指标类型,而无需添加新的服务依赖项。
使用入门
- 确保使用 ComponentInspector 或 inspect_runtime 提供 Inspect。
- 注册 Cobalt 指标 要将“检查”指标转换为何种格式
- 创建采样器配置,定义从 Inspect 到 钴。查看现有配置文件。
采样器配置
我们将使用 FVM 集成作为示例配置。
{
"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,该 ID 指定了采样器代表哪个 Cobalt 客户端进行采样和转发。虽然在采样器 v1.1 中,它还指定了顶级 polpol_rate_seconds 系统将代表客户端将轮询率迁移到按指标配置。
接下来,配置需要指标转换列表。在这些配置中,客户端会提供用于标识相关检查指标的选择器,以及代表客户端转发检查所需的 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 中注册指标时使用的 ID 相同 yaml 文件。event_codes
是您在注册 Cobalt 指标时指定的维度值列表。对于 FVM,每个指标都有一个与其分区类型对应的维度值。
注意:采样器配置中维度值的顺序必须 与 yaml 中声明维度的顺序一致 定义。