mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Move trigger stats to telemetry instruments
This commit is contained in:
parent
77c05357b5
commit
8b4af06484
2 changed files with 25 additions and 4 deletions
|
@ -13,6 +13,7 @@
|
||||||
#include "zeek/Traverse.h"
|
#include "zeek/Traverse.h"
|
||||||
#include "zeek/Val.h"
|
#include "zeek/Val.h"
|
||||||
#include "zeek/iosource/Manager.h"
|
#include "zeek/iosource/Manager.h"
|
||||||
|
#include "zeek/telemetry/Manager.h"
|
||||||
|
|
||||||
using namespace zeek::detail;
|
using namespace zeek::detail;
|
||||||
using namespace zeek::detail::trigger;
|
using namespace zeek::detail::trigger;
|
||||||
|
@ -437,7 +438,19 @@ Manager::Manager() : iosource::IOSource() { pending = new TriggerList(); }
|
||||||
|
|
||||||
Manager::~Manager() { delete pending; }
|
Manager::~Manager() { delete pending; }
|
||||||
|
|
||||||
void Manager::InitPostScript() { iosource_mgr->Register(this, true); }
|
void Manager::InitPostScript() {
|
||||||
|
trigger_count = telemetry_mgr->CounterInstance("zeek", "triggers", {}, "Total number of triggers scheduled");
|
||||||
|
trigger_pending =
|
||||||
|
telemetry_mgr->GaugeInstance("zeek", "pending_triggers", {}, "Pending number of triggers", "",
|
||||||
|
[]() -> prometheus::ClientMetric {
|
||||||
|
prometheus::ClientMetric metric;
|
||||||
|
metric.gauge.value =
|
||||||
|
trigger_mgr ? static_cast<double>(trigger_mgr->pending->size()) : 0.0;
|
||||||
|
return metric;
|
||||||
|
});
|
||||||
|
|
||||||
|
iosource_mgr->Register(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
double Manager::GetNextTimeout() { return pending->empty() ? -1 : run_state::network_time + 0.100; }
|
double Manager::GetNextTimeout() { return pending->empty() ? -1 : run_state::network_time + 0.100; }
|
||||||
|
|
||||||
|
@ -468,13 +481,13 @@ void Manager::Queue(Trigger* trigger) {
|
||||||
if ( std::find(pending->begin(), pending->end(), trigger) == pending->end() ) {
|
if ( std::find(pending->begin(), pending->end(), trigger) == pending->end() ) {
|
||||||
Ref(trigger);
|
Ref(trigger);
|
||||||
pending->push_back(trigger);
|
pending->push_back(trigger);
|
||||||
total_triggers++;
|
trigger_count->Inc();
|
||||||
iosource_mgr->Wakeup(Tag());
|
iosource_mgr->Wakeup(Tag());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::GetStats(Stats* stats) {
|
void Manager::GetStats(Stats* stats) {
|
||||||
stats->total = total_triggers;
|
stats->total = static_cast<unsigned long>(trigger_count->Value());
|
||||||
stats->pending = pending->size();
|
stats->pending = pending->size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,13 @@ class Val;
|
||||||
|
|
||||||
using ValPtr = IntrusivePtr<Val>;
|
using ValPtr = IntrusivePtr<Val>;
|
||||||
|
|
||||||
|
namespace telemetry {
|
||||||
|
class Gauge;
|
||||||
|
class Counter;
|
||||||
|
using GaugePtr = std::shared_ptr<Gauge>;
|
||||||
|
using CounterPtr = std::shared_ptr<Counter>;
|
||||||
|
} // namespace telemetry
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
class Frame;
|
class Frame;
|
||||||
|
@ -187,7 +194,8 @@ public:
|
||||||
private:
|
private:
|
||||||
using TriggerList = std::list<Trigger*>;
|
using TriggerList = std::list<Trigger*>;
|
||||||
TriggerList* pending;
|
TriggerList* pending;
|
||||||
unsigned long total_triggers = 0;
|
telemetry::CounterPtr trigger_count;
|
||||||
|
telemetry::GaugePtr trigger_pending;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace trigger
|
} // namespace trigger
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue