Fuchsia 上的诊断和可观测性

Fuchsia 提供了各种系统来监控正在运行的 Fuchsia 系统。每种可观测性系统都会提供不同的信息和权衡。通过 可观测性系统具有如下特点:

日志记录

日志描述的是人类可读的内容,因此在诊断方面发挥着重要作用 在 Fuchsia 系统上发生的事件。在 Fuchsia 中,组件可以 通过 fuchsia.logger.LogSink 记录日志消息 协议。sdk/lib/syslog/cppsrc/lib/diagnostics/log/rust 是用于在 Fuchsia 上记录日志的受支持库。这些库提供了 实现标签、结构化键值对、 元数据、消息和 fuchsia.logger.LogSink 集成。对于 如需详细了解 Fuchsia 组件如何写入日志,请参阅 记录日志

如果您希望实现以下目标,则应该考虑使用日志记录:

  • 查看直观易懂的低频消息和事件。
  • 查看快照和其他 Fuchsia 工具中的数据。

跟踪记录

Fuchsia 的跟踪系统提供了一种 收集、汇总和直观呈现 Fuchsia 用户空间进程和 Zircon 内核。轨迹(如日志)也表示 Fuchsia 系统中的事件,但粒度更细、频率更高,并且供机器使用,以计算其他数据分析和可视化结果。将结构化日志记录和跟踪结合使用有助于 更高效地诊断、调试和排查各种 Fuchsia 目标设备。

如果您需要实时查看数据,则应考虑使用跟踪功能 并希望能够:

  • 收集亚微秒级精细结构化数据。
  • 在交互式查看器中直观呈现数据。
  • 在 SQL 中查询和汇总数据。

检查

Fuchsia 提供了 Inspect,使 Fuchsia 组件能够公开 有关设备当前状态的结构化诊断信息。然后,您可以使用 ffx inspect 工具查询此诊断信息。如需了解详情,请参阅 Fuchsia 组件检查ffx inspect

如果您希望能够:

  • 监控组件在特定时间的状态。
  • 表示有关 组件。
  • 收集组件状态的低频率快照数据,以启用全车队指标。
  • 在快照和工具中查看检查数据。
  • 构建可视化功能、进行分析,并创建基于检测的自动异常值检测 快照

钴蓝

Cobalt 是一个流水线,用于从 字段并生成汇总报告。

Cobalt 包含一套可保护用户隐私和匿名性的功能 同时为产品所有者提供改进产品所需的数据。

使用 Cobalt 时,建议使用 Inspect 对组件进行插桩。如果您的组件使用 Inspect 进行插桩,Sampler 会将 Inspect 诊断数据转发到 Cobalt 遥测系统以进行舰队监控。

如需详细了解 Cobalt,请参阅 Cobalt:内置隐私保护功能的遥测

快照

Fuchsia 设备能够捕获包含整个系统当前状态信息的快照。这包括有关系统上运行的 Fuchsia build 的信息、内核和系统日志,以及系统及其组件的 Inspect 数据。您还可以使用 ffx target snapshot 工具。

检测

此外,Fuchsia 设备运行 Detect,该工具能够根据定期快照一部分组件 Inspect 数据并检查各种条件(如果为真,则会触发崩溃或反馈报告)来触发崩溃报告。

使用诊断和可观测性功能

在您使用 Fuchsia 日志、检查和跟踪来诊断问题时, 希望使用其中的部分工具:

  • ffx log,用于从 Fuchsia 设备检索日志。
  • ffx target snapshot,用于拍摄 Fuchsia 目标设备的状态。
  • ffx triage,用于分析日志并检查 Fuchsia 快照。
  • ffx inspect,用于查询组件公开的数据 检查 API。
  • ffx trace,用于收集、汇总和直观呈现诊断信息 跟踪信息
  • zxdb 来调试在 Fuchsia 上运行的代码。zxdb 是 控制台模式调试程序,适用于在 Fuchsia 上运行的代码。

您可能还需要执行以下操作:

您还可以按照诊断 Codelab 中的说明操作:

您还可以按照以下跟踪教程和指南操作: