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/Func.h"
|
||||||
#include "zeek/broker/Data.h"
|
#include "zeek/broker/Data.h"
|
||||||
#include "zeek/broker/Store.h"
|
#include "zeek/broker/Store.h"
|
||||||
|
#include "zeek/telemetry/Manager.h"
|
||||||
#include "zeek/util.h"
|
#include "zeek/util.h"
|
||||||
#include "zeek/Var.h"
|
#include "zeek/Var.h"
|
||||||
#include "zeek/Desc.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());
|
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
|
} // namespace zeek::Broker
|
||||||
|
|
|
@ -30,6 +30,8 @@ class TableVal;
|
||||||
using VectorTypePtr = IntrusivePtr<VectorType>;
|
using VectorTypePtr = IntrusivePtr<VectorType>;
|
||||||
using TableValPtr = IntrusivePtr<TableVal>;
|
using TableValPtr = IntrusivePtr<TableVal>;
|
||||||
|
|
||||||
|
namespace telemetry { class Manager; }
|
||||||
|
|
||||||
namespace detail { class Frame; }
|
namespace detail { class Frame; }
|
||||||
|
|
||||||
namespace Broker {
|
namespace Broker {
|
||||||
|
@ -357,6 +359,11 @@ public:
|
||||||
~ScriptScopeGuard() { --script_scope; }
|
~ScriptScopeGuard() { --script_scope; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates a new manager for telemetry data.
|
||||||
|
*/
|
||||||
|
std::unique_ptr<telemetry::Manager> NewTelemetryManager();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void DispatchMessage(const broker::topic& topic, broker::data msg);
|
void DispatchMessage(const broker::topic& topic, broker::data msg);
|
||||||
|
|
|
@ -69,6 +69,7 @@ extern "C" {
|
||||||
#include "zeek/zeekygen/Manager.h"
|
#include "zeek/zeekygen/Manager.h"
|
||||||
#include "zeek/iosource/Manager.h"
|
#include "zeek/iosource/Manager.h"
|
||||||
#include "zeek/broker/Manager.h"
|
#include "zeek/broker/Manager.h"
|
||||||
|
#include "zeek/telemetry/Manager.h"
|
||||||
|
|
||||||
#include "zeek/binpac_zeek.h"
|
#include "zeek/binpac_zeek.h"
|
||||||
#include "zeek/module_util.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::zeekygen::detail::Manager* zeek::detail::zeekygen_mgr = nullptr;
|
||||||
zeek::iosource::Manager* zeek::iosource_mgr = nullptr;
|
zeek::iosource::Manager* zeek::iosource_mgr = nullptr;
|
||||||
zeek::Broker::Manager* zeek::broker_mgr = nullptr;
|
zeek::Broker::Manager* zeek::broker_mgr = nullptr;
|
||||||
|
zeek::telemetry::Manager* zeek::telemetry_mgr = nullptr;
|
||||||
zeek::Supervisor* zeek::supervisor_mgr = nullptr;
|
zeek::Supervisor* zeek::supervisor_mgr = nullptr;
|
||||||
zeek::detail::trigger::Manager* zeek::detail::trigger_mgr = nullptr;
|
zeek::detail::trigger::Manager* zeek::detail::trigger_mgr = nullptr;
|
||||||
|
|
||||||
|
@ -327,6 +329,7 @@ static void terminate_bro()
|
||||||
delete plugin_mgr;
|
delete plugin_mgr;
|
||||||
delete val_mgr;
|
delete val_mgr;
|
||||||
delete fragment_mgr;
|
delete fragment_mgr;
|
||||||
|
delete telemetry_mgr;
|
||||||
|
|
||||||
// free the global scope
|
// free the global scope
|
||||||
pop_scope();
|
pop_scope();
|
||||||
|
@ -576,6 +579,7 @@ SetupResult setup(int argc, char** argv, Options* zopts)
|
||||||
file_mgr = new file_analysis::Manager();
|
file_mgr = new file_analysis::Manager();
|
||||||
auto broker_real_time = ! options.pcap_file && ! options.deterministic_mode;
|
auto broker_real_time = ! options.pcap_file && ! options.deterministic_mode;
|
||||||
broker_mgr = new Broker::Manager(broker_real_time);
|
broker_mgr = new Broker::Manager(broker_real_time);
|
||||||
|
telemetry_mgr = broker_mgr->NewTelemetryManager().release();
|
||||||
trigger_mgr = new trigger::Manager();
|
trigger_mgr = new trigger::Manager();
|
||||||
|
|
||||||
plugin_mgr->InitPreScript();
|
plugin_mgr->InitPreScript();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue