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,用于通过 Inspect API 查询组件公开的数据。
  • ffx trace:用于收集、汇总和直观呈现诊断跟踪信息。
  • zxdb 用于调试在 Fuchsia 上运行的代码。zxdb 是适用于在 Fuchsia 上运行的代码的控制台模式调试程序。

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

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

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