Substrate Journal Shipping #
Substrate hosts keep their journals to themselves. Reading across the site is an SSH session per
host.
ADR-0022 describes
shipping them to the log store with systemd-journal-upload; the store was then narrowed to
tenants’ logs (
ADR-0027),
and the shipping was never deployed.
To be considered, not scheduled. The substrate exists to run tenants, and this is work on the substrate for its own sake. It is written down so that what was learned is not lost, and so it can be weighed against tenant work when someone next wants a host’s logs and has to go and fetch them.
Legend: β Complete | π In Progress | β³ Planned
Project Vision & Scope #
An operator reads any substrate host’s journal from one place, and a host that has gone down has already sent what it had to say.
In Scope
- Fedora substrate hosts shipping their own journal, store and forward, each with its own token
- Where substrate logs live now that the log store is the tenants'
Out of Scope
- The Builder, which roams and ships nowhere
- Hypervisors and network devices, which ADR-0022 sends by syslog
- Tenant workloads, whose shipping is the tenant’s choice
What was tried #
A journal_upload role was written and run against one host, dv02nms001v01, on 2026-09-21. It
delivered 194 thousand lines, and was then reverted there. The role was never merged; its branch
was discarded on 2026-10-11 and this page is what remains of it. It was about 200 lines and would
be quicker to write again than to revive.
Three things the trial found, each of which stops it working and none of which is obvious:
- SELinux. The store’s port must be labelled
journal_remote_port_t, orsystemd_journal_upload_tcannot connect to it. - No client certificate.
ServerKeyFile=-andServerCertificateFile=-must be set, or journal-upload demands a client certificate it does not have. - The token’s file mode. The token is a
Header=line in a drop-in. The Fedora unit runs as a dynamic user, so a root-only file stops the service reading its own configuration, and the stock mode hands the token to every local user. The drop-in is0640 root:systemd-journal. journal-upload cannot readHeader=from a systemd credential.
Header= needs systemd 258 or later; Fedora 44 has 259. The local journal stays the first copy,
and the unit resumes from saved state after an outage.
Before it could go in β³ #
- β³ The first run sends the whole journal. A host that has been up for months sends months. Decide whether to start from now, or to let the backfill run and at what cost to the store.
- β³ NIC stability on the core router. The trial raised a doubt about shipping from it under load. Settle it on that host before it ships anything.
- β³ Where substrate logs go. ADR-0027 made the log store the tenants’. Substrate logs need a decision of their own: a partition there that no tenant can read, or somewhere else.