mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Add telemetry Manager to Zeek setup / teardown
This commit is contained in:
parent
83d7d2da4c
commit
443f7f0a18
3 changed files with 39 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
|||
#include "zeek/Func.h"
|
||||
#include "zeek/broker/Data.h"
|
||||
#include "zeek/broker/Store.h"
|
||||
#include "zeek/telemetry/Manager.h"
|
||||
#include "zeek/util.h"
|
||||
#include "zeek/Var.h"
|
||||
#include "zeek/Desc.h"
|
||||
|
@ -1806,4 +1807,31 @@ void Manager::PrepareForwarding(const std::string &name)
|
|||
DBG_LOG(DBG_BROKER, "Resolved table forward for data store %s", name.c_str());
|
||||
}
|
||||
|
||||
std::unique_ptr<telemetry::Manager> Manager::NewTelemetryManager()
|
||||
{
|
||||
// The telemetry Manager actually only has a dependency on the actor system,
|
||||
// not to the Broker Manager. By having the telemetry Manager hold on to a
|
||||
// shared_ptr to our Broker state, we make sure the Broker endpoint, which
|
||||
// owns the CAF actor system, lives for as long as necessary. This also
|
||||
// makes sure that the Broker Manager may even get destroyed before the
|
||||
// telemetry Manager.
|
||||
struct TM : public telemetry::Manager
|
||||
{
|
||||
static auto getPimpl(BrokerState& st)
|
||||
{
|
||||
auto registry = std::addressof(st.endpoint.system().metrics());
|
||||
return reinterpret_cast<telemetry::Manager::Impl*>(registry);
|
||||
}
|
||||
|
||||
explicit TM(const std::shared_ptr<BrokerState>& bsptr)
|
||||
: telemetry::Manager(getPimpl(*bsptr)), ptr(bsptr)
|
||||
{
|
||||
}
|
||||
|
||||
std::shared_ptr<BrokerState> ptr;
|
||||
};
|
||||
|
||||
return std::make_unique<TM>(bstate);
|
||||
}
|
||||
|
||||
} // namespace zeek::Broker
|
||||
|
|
|
@ -30,6 +30,8 @@ class TableVal;
|
|||
using VectorTypePtr = IntrusivePtr<VectorType>;
|
||||
using TableValPtr = IntrusivePtr<TableVal>;
|
||||
|
||||
namespace telemetry { class Manager; }
|
||||
|
||||
namespace detail { class Frame; }
|
||||
|
||||
namespace Broker {
|
||||
|
@ -357,6 +359,11 @@ public:
|
|||
~ScriptScopeGuard() { --script_scope; }
|
||||
};
|
||||
|
||||
/**
|
||||
* Allocates a new manager for telemetry data.
|
||||
*/
|
||||
std::unique_ptr<telemetry::Manager> NewTelemetryManager();
|
||||
|
||||
private:
|
||||
|
||||
void DispatchMessage(const broker::topic& topic, broker::data msg);
|
||||
|
|
|
@ -69,6 +69,7 @@ extern "C" {
|
|||
#include "zeek/zeekygen/Manager.h"
|
||||
#include "zeek/iosource/Manager.h"
|
||||
#include "zeek/broker/Manager.h"
|
||||
#include "zeek/telemetry/Manager.h"
|
||||
|
||||
#include "zeek/binpac_zeek.h"
|
||||
#include "zeek/module_util.h"
|
||||
|
@ -107,6 +108,7 @@ zeek::file_analysis::Manager* zeek::file_mgr = nullptr;
|
|||
zeek::zeekygen::detail::Manager* zeek::detail::zeekygen_mgr = nullptr;
|
||||
zeek::iosource::Manager* zeek::iosource_mgr = nullptr;
|
||||
zeek::Broker::Manager* zeek::broker_mgr = nullptr;
|
||||
zeek::telemetry::Manager* zeek::telemetry_mgr = nullptr;
|
||||
zeek::Supervisor* zeek::supervisor_mgr = nullptr;
|
||||
zeek::detail::trigger::Manager* zeek::detail::trigger_mgr = nullptr;
|
||||
|
||||
|
@ -327,6 +329,7 @@ static void terminate_bro()
|
|||
delete plugin_mgr;
|
||||
delete val_mgr;
|
||||
delete fragment_mgr;
|
||||
delete telemetry_mgr;
|
||||
|
||||
// free the global scope
|
||||
pop_scope();
|
||||
|
@ -576,6 +579,7 @@ SetupResult setup(int argc, char** argv, Options* zopts)
|
|||
file_mgr = new file_analysis::Manager();
|
||||
auto broker_real_time = ! options.pcap_file && ! options.deterministic_mode;
|
||||
broker_mgr = new Broker::Manager(broker_real_time);
|
||||
telemetry_mgr = broker_mgr->NewTelemetryManager().release();
|
||||
trigger_mgr = new trigger::Manager();
|
||||
|
||||
plugin_mgr->InitPreScript();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue