tree: 7620d3f770dbf51838f8fe467b845225aa088a62 [path history] [tgz]
  1. bench/
  2. build/
  3. meta/
  4. src/
  5. tests/
  6. BUILD.gn
  7. configs.gni
  8. README.md
src/diagnostics/archivist/README.md

Diagnostics Archivist

Reviewed on: 2020-11-16

Archivist collects component lifecycle events, inspect snapshots, and log streams on Fuchsia, making them available over the fuchsia.diagnostics/ArchiveAccessor protocol.

Building

This project is included in the bringup build product and most others as a result.

Running

The production Archivist is “mounted” in the component topology in the bootstrap realm.

Tests run by run-test-component have an Archivist embedded in the test realm when either fuchsia.logger/LogSink or fuchsia.logger/Log is requested.

Realms can run their own Archivist by running archivist-for-embedding.cm from the archivist-for-embedding package. This has a number of sharp edges today and the Diagnostics team recommends consulting with us in the process of writing a new integration.

Testing

Unit tests are available in the archivist-tests package.

Integration tests for system logging are available in these packages:

  • archivist-integration-tests
  • archivist-integration-tests-v2
  • test-logs-from-crashes

Source layout

The entrypoint is located in src/main.rs, with the rest of the code living in src/*.rs files. Unit tests are co-located with the code and integration tests are located in the tests/ directory.

Each data type the Archivist supports has a directory:

  • src/inspect
  • src/lifecycle
  • src/logs

Configuration

Archivist accepts a configuration file to allow product-specific configuration separately from its package. The configuration file must be valid JSON with a single object at the top level. Its path within Archivist's namespace is defined by the --config-path argument.

See the generated docs for Archivist's serde-based config parser for details.