Monitoring: trace history, trace search, and x:Trace over the stored traces (MON-10 to MON-17, MON-32)

A lossy collector subscriber keeps each inbound SMTP session that reached
MAIL FROM and each delivery attempt, info level and above and never raw
I/O, at most 1,000 events with strings cut at 4 KiB, and writes it when
the span closes as an x:Trace under the telemetry key class, scheduling
its indexing. The index task builds a document of event types, queue ids
and keywords when indexTelemetry is on. x:Trace/get derives timestamp,
from, to and size; /query filters by opening event, text, queueId and
time; /set destroys only. The data purge honours holdTracesFor. The shared
tracing and webhook suites run.
This commit is contained in:
2026-09-19 08:31:04 -07:00
parent 9f7035588f
commit fc2d4f237f
13 changed files with 686 additions and 9 deletions
@@ -248,6 +248,18 @@ async fn store_maintenance(
{
trc::error!(err.details("Failed to purge metric history"));
}
if let Some(keep) = retention.hold_traces_for
&& !server.tracing_store().is_none()
{
use common::telemetry::tracers::store::TracingStore;
if let Err(err) = server
.tracing_store()
.purge_spans(keep.into_inner(), Some(server.search_store()))
.await
{
trc::error!(err.details("Failed to purge trace history"));
}
}
trc::event!(
Store(StoreEvent::DataStorePurged),