zeek/scripts/base/frameworks/cluster/broker-telemetry.zeek
Christian Kreibich 1bea3121db Add cluster framework telemetry for Broker's send-buffer use
This hooks into Telemetry::sync() to update Broker-level metrics tracking the
peerings' send buffer state. We do this in the cluster framework so we can label
the resulting metrics with Zeek cluster node names, not Broker's endpoint IDs.
2025-04-18 16:45:31 -07:00

50 lines
1.3 KiB
Text

# Additional Broker-specific metrics that use Zeek cluster-level node names.
@load base/frameworks/telemetry
module Cluster;
global broker_peer_buffer_levels_gf = Telemetry::register_gauge_family([
$prefix="zeek",
$name="broker-peer-buffer-levels",
$unit="",
$label_names=vector("peer"),
$help_text="Number of messages queued in Broker's per-peer send buffers",
]);
global broker_peer_buffer_overflows_cf = Telemetry::register_counter_family([
$prefix="zeek",
$name="broker-peer-buffer-overflows",
$unit="",
$label_names=vector("peer"),
$help_text="Number of overflows in Broker's per-peer send buffers",
]);
hook Telemetry::sync()
{
local peers: table[string] of count = Broker::peer_buffer_levels();
local nn: NamedNode;
for ( peer, level in peers )
{
# Translate the Broker IDs to Zeek-level node names. We skip
# telemetry for peers where this mapping fails, i.e. ones for
# connections to external systems.
nn = nodeid_to_node(peer);
if ( |nn$name| > 0 )
Telemetry::gauge_family_set(broker_peer_buffer_levels_gf,
vector(nn$name), level);
}
peers = Broker::peer_buffer_overflows();
for ( peer, overflows in peers )
{
nn = nodeid_to_node(peer);
if ( |nn$name| > 0 )
Telemetry::counter_family_set(broker_peer_buffer_overflows_cf,
vector(nn$name), overflows);
}
}