diff --git a/src/telemetry/Manager.cc b/src/telemetry/Manager.cc index fe0fb572d7..6c18cd038c 100644 --- a/src/telemetry/Manager.cc +++ b/src/telemetry/Manager.cc @@ -135,6 +135,10 @@ void Manager::InitPostScript() { []() { return static_cast(get_stats()->fds); }); #endif + // These two metrics get set at startup and are never modified after. + process_start_time = GaugeInstance("process", "start_time", {}, "Process start time", "seconds"); + process_start_time->Set(run_state::zeek_start_time); + if ( ! iosource_mgr->RegisterFd(collector_flare.FD(), this) ) { reporter->FatalError("Failed to register telemetry collector descriptor"); } diff --git a/src/telemetry/Manager.h b/src/telemetry/Manager.h index a25387a710..a237af3940 100644 --- a/src/telemetry/Manager.h +++ b/src/telemetry/Manager.h @@ -282,6 +282,7 @@ private: CounterPtr cpu_user_counter; CounterPtr cpu_system_counter; GaugePtr fds_gauge; + GaugePtr process_start_time; std::shared_ptr prometheus_registry; std::unique_ptr prometheus_exposer; diff --git a/testing/btest/Baseline/scripts.base.frameworks.telemetry.process-collect/out b/testing/btest/Baseline/scripts.base.frameworks.telemetry.process-collect/out index a080efc2a5..cb99fb2fc5 100644 --- a/testing/btest/Baseline/scripts.base.frameworks.telemetry.process-collect/out +++ b/testing/btest/Baseline/scripts.base.frameworks.telemetry.process-collect/out @@ -5,9 +5,11 @@ process_cpu_system_seconds_total, [], >0.0, good process_resident_memory_bytes, [], >0.0, good process_virtual_memory_bytes, [], >0.0, good process_open_fds, [], >0.0, good +process_start_time_seconds, [], >0.0, good zeek_done process_cpu_user_seconds_total, [], >0.0, good process_cpu_system_seconds_total, [], >0.0, good process_resident_memory_bytes, [], >0.0, good process_virtual_memory_bytes, [], >0.0, good process_open_fds, [], >0.0, good +process_start_time_seconds, [], >0.0, good