diff --git a/deps/rabbit/src/rabbit_osiris_metrics.erl b/deps/rabbit/src/rabbit_osiris_metrics.erl index 507e78a450ad..96b4913af3c8 100644 --- a/deps/rabbit/src/rabbit_osiris_metrics.erl +++ b/deps/rabbit/src/rabbit_osiris_metrics.erl @@ -28,7 +28,8 @@ memory, readers, consumers, - segments + segments, + first_timestamp ]). -record(state, {timeout :: non_neg_integer()}). diff --git a/deps/rabbit/src/rabbit_stream_queue.erl b/deps/rabbit/src/rabbit_stream_queue.erl index 4b7efec6aadb..dc28ade8b65c 100644 --- a/deps/rabbit/src/rabbit_stream_queue.erl +++ b/deps/rabbit/src/rabbit_stream_queue.erl @@ -75,7 +75,7 @@ -define(INFO_KEYS, [name, durable, auto_delete, arguments, leader, members, online, state, messages, messages_ready, messages_unacknowledged, committed_offset, policy, operator_policy, effective_policy_definition, type, memory, - consumers, segments, committed_chunk_id]). + consumers, segments, committed_chunk_id, first_timestamp]). -define(UNMATCHED_THRESHOLD, 200). @@ -825,6 +825,14 @@ i(segments = F, Q) -> _ -> '' end; +i(first_timestamp = F, Q) -> + Key = {osiris_writer, amqqueue:get_name(Q)}, + case osiris_counters:counters(Key, [F]) of + #{F := V} -> + V; + _ -> + '' + end; i(policy, Q) -> case rabbit_policy:name(Q) of none -> ''; diff --git a/deps/rabbitmq_management/priv/www/js/formatters.js b/deps/rabbitmq_management/priv/www/js/formatters.js index 0423a28b8af8..cd52e3eb6e7c 100644 --- a/deps/rabbitmq_management/priv/www/js/formatters.js +++ b/deps/rabbitmq_management/priv/www/js/formatters.js @@ -92,10 +92,16 @@ function fmt_date0(d) { } function fmt_timestamp(ts) { + if (ts == undefined) { + return UNKNOWN_REPR; + } return fmt_date(new Date(ts)); } function fmt_timestamp_mini(ts) { + if (ts == undefined) { + return UNKNOWN_REPR; + } return fmt_date_mini(new Date(ts)); } diff --git a/deps/rabbitmq_management/priv/www/js/tmpl/stream-queue-stats.ejs b/deps/rabbitmq_management/priv/www/js/tmpl/stream-queue-stats.ejs index aca685bc3055..33d307f752af 100644 --- a/deps/rabbitmq_management/priv/www/js/tmpl/stream-queue-stats.ejs +++ b/deps/rabbitmq_management/priv/www/js/tmpl/stream-queue-stats.ejs @@ -28,6 +28,10 @@ Segments <%= fmt_string(queue.segments) %> + + Oldest message + <%= fmt_timestamp_mini(queue.first_timestamp) %> + @@ -53,4 +57,4 @@ -
<%= fmt_bytes(queue.memory) %>
\ No newline at end of file +