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:
@@ -381,6 +381,9 @@ impl RegistryGet for Server {
|
||||
}
|
||||
ObjectType::Log => log_get(get).await.map(|get| get.into_response()),
|
||||
// inbuxa: monitoring history (MON-17, MON-31)
|
||||
ObjectType::Trace => crate::inbuxa::telemetry::trace_get(get)
|
||||
.await
|
||||
.map(|get| get.into_response()),
|
||||
ObjectType::Metric => crate::inbuxa::telemetry::metric_get(get)
|
||||
.await
|
||||
.map(|get| get.into_response()),
|
||||
|
||||
@@ -123,6 +123,14 @@ impl RegistryQuery for Server {
|
||||
.and_then(|response| response.build()),
|
||||
|
||||
// inbuxa: monitoring history (MON-17, MON-31)
|
||||
ObjectType::Trace => crate::inbuxa::telemetry::trace_query(RegistryQueryResponse {
|
||||
server: self,
|
||||
access_token,
|
||||
object_type,
|
||||
request,
|
||||
})
|
||||
.await
|
||||
.and_then(|response| response.build()),
|
||||
ObjectType::Metric => crate::inbuxa::telemetry::metric_query(RegistryQueryResponse {
|
||||
server: self,
|
||||
access_token,
|
||||
|
||||
@@ -881,7 +881,11 @@ impl RegistrySet for Server {
|
||||
.await
|
||||
.map(|set| set.into_response()),
|
||||
|
||||
ObjectType::Log | ObjectType::Metric | ObjectType::Trace | ObjectType::ClusterNode => {
|
||||
// inbuxa: MON-32: a trace can be destroyed, never created or changed
|
||||
ObjectType::Trace => crate::inbuxa::telemetry::trace_set(set)
|
||||
.await
|
||||
.map(|set| set.into_response()),
|
||||
ObjectType::Log | ObjectType::Metric | ObjectType::ClusterNode => {
|
||||
set.fail_all_create("Telemetry objects cannot be created");
|
||||
set.fail_all_update("Telemetry objects cannot be modified");
|
||||
set.fail_all_destroy("Telemetry objects cannot be deleted");
|
||||
|
||||
Reference in New Issue
Block a user