采样器 - 诊断数据转发器

采样器转发 Inspect 将诊断数据传输到 Cobalt 遥测系统。

如果您的组件使用 Inspect 进行了插桩测试,您可以使用 Cobalt 遥测 (舰队监控),只需更改配置文件即可!如果您想 设备群监控的低门槛(无需新的 FIDL 集成,无新数据) 因此采样器非常适合您!

我能获得什么?

采样器以降低复杂性的方法获取舰队范围的监控 集成到每个组件的调试工具包中。

集中式数据模型

许多开发者发现,同时维护两个独立的数据模型很费力, 一项针对设备端或崩溃报告调试等任务,另一项针对 例如舰队监控

使用采样器时,可以将单个诊断数据模型 (Inspect) 作为数据源 。

避免直接集成的复杂性

对于某些组件(如驱动程序),它们的工作负载对系统至关重要,以至于 找到“正确的时间”执行诊断等非必要的工作 报告是一项复杂的工作。通过将采样集中到采样器, 能够将工作分流到一个可在运行期间 非峰值用户负载即使组件不提供 与 Sampler 集成后,Fucsia 更加健康, 从而实现更明智的抽样时间安排。

与 Cobalt 直接集成需要组件作者考虑其流程 作为客户端向 Cobalt 设备端转发器发送请求。流量 控件隐含在采样器中,因此您可以更侧重于上传常用 而无需添加新的服务依赖项。

使用入门

  1. 如果您使用的是 V2 组件,请务必公开 diagnostics 目录转到诊断平台
  2. 注册 Cobalt 指标 要将“检查”指标转换为何种格式
  3. 创建采样器配置,定义从 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 元数据 。

  1. metric_type 是请求的指标转换类型。
    • 如果您的 Cobalt 指标是用于跟踪 数值聚合,请使用 metric_type 出现次数
    • 如果您的 Cobalt 指标是用于跟踪原始数据的 INTEGER 类型 整数(例如 cpu_load、thermal_temp),请使用 metric_type 整数
    • 如果您的 Cobalt 指标的类型为 INTEGER_HISTOGRAM,请使用 metric_type IntHistogram
    • 如果您的 Cobalt 指标类型为 STRING,请使用 metric_type String
  2. metric_id 与您在 Cobalt 中注册指标时使用的 ID 相同 yaml 文件。
  3. event_codes是指在 Cobalt 指标的注册率。在 FVM 的情况下,每个指标 与其分区类型相对应的维度值。

注意:采样器配置中维度值的顺序必须 与 YAML 文件中声明维度的顺序一致 定义。