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 系统中的事件,专为高频事件记录和收集后直观分析而设计。

Perfetto 界面结合使用时,跟踪功能可让您在互动式时间轴上直观地查看 即时事件和持续时间。

如果您希望能够执行以下操作,不妨考虑使用跟踪功能:

  • 在时间轴上直观地查看即时里程碑和持续时间片段。

  • 测量精确的亚微秒级延迟时间,并找出执行瓶颈。

  • 跟踪异步操作和跨进程和线程的流事件。

  • 将用户空间执行与 Zircon 内核调度事件相关联。

  • 在 Perfetto 跟踪处理器中使用 SQL 离线查询和汇总跟踪数据。

检查

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

如果您希望能够执行以下操作,不妨考虑使用检查功能:

  • 监控组件在特定给定时间的状态。
  • 表示有关组件当前状态和近期历史记录的信息。
  • 收集组件状态的低频快照数据,以启用整个舰队的指标。
  • 在快照和工具中查看检查数据。
  • 根据快照构建可视化图表、分析和创建自动异常检测。

Cobalt

Cobalt 是一种流水线,用于从现场用户拥有的设备收集指标数据并生成汇总报告。

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

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

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

快照

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

检测

此外,Fuchsia 设备还会运行 Detect 功能,该功能能够根据定期拍摄组件检查数据子集的快照并检查各种条件来触发 崩溃报告,如果条件为 true,则会导致其触发崩溃或反馈报告。

使用诊断和可观测性

在使用 Fuchsia 日志、检查和跟踪功能诊断问题时,您可能需要使用以下一些工具:

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

您可能还需要:

您还可以按照诊断 codelab 进行操作:

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