如果您的组件已通过 Inspect 进行检测,只需更改配置文件,即可使用 Cobalt 遥测(机群监控)!如果您希望以较低的门槛开始进行设备群监控(无需新的 FIDL 集成、无需新的数据模型、组件中没有复杂的流量控制),那么 Sampler 非常适合您!
我能获得什么?
Sampler 提供了一种降低复杂性的方法,可将整个舰队的监控纳入每个组件的调试工具包中。
集中式数据模型
许多开发者发现,必须维护两个单独的数据模型(一个用于设备端或崩溃报告调试等,另一个用于机群监控等)非常麻烦。
借助 Sampler,单个诊断数据模型 (Inspect) 可作为所有分支诊断数据的来源。
避免直接集成的复杂性
对于某些组件(例如驱动程序),其工作负载对系统至关重要,因此找到执行诊断报告等非必要工作的“合适时间”可能是一项复杂的任务。通过将抽样集中到 Sampler,我们可以将工作分流到可在非用户高峰时段运行的程序。即使对于不提供系统关键服务的组件,与 Sampler 集成也能通过实现更明智的抽样调度来提高 Fuchsia 的健康度。
与 Cobalt 直接集成需要组件作者将自己的流控制视为向 Cobalt 设备端转发器发送请求的客户端。采样器中隐式包含流控制,因此您可以更专注于上传常见的指标类型,而无需添加新的服务依赖项。
使用入门
- 确保您使用 ComponentInspector 或 inspect_runtime 来提供 Inspect。
- 注册要将 Inspect 指标转换为的 Cobalt 指标。
- 创建定义从 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,用于指定采样器正在代表哪个 Cobalt 客户端进行采样和转发。 它还指定了顶级 poll_rate_seconds,不过在 Sampler v1.1 中,此轮询速率将代表客户端迁移到每项指标的配置。
接下来,配置需要一个指标转换列表。在这些配置中,客户端提供一个或多个用于标识相关检查指标的选择器,以及代表客户端转发检查所需的 Cobalt 元数据。在每个采样周期,系统都会使用第一个匹配数据的选择器。
metric_type
是所请求的指标转换类型。- 如果您的 Cobalt 指标属于用于跟踪数值汇总的 OCCURRENCE 类型,请使用 metric_type Occurrence。
- 如果您的 Cobalt 指标属于用于跟踪原始整数(例如 cpu_load、thermal_temp)的 INTEGER 类型,请使用 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"
字段可以接受选择器列表,而不是单个选择器。在这种情况下,系统将在每个采样周期使用第一个匹配任何数据的选择器。
此行为支持将指标从一个选择器过渡到另一个选择器。