mirror of
https://github.com/zeek/zeek.git
synced 2025-10-03 15:18:20 +00:00

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.
50 lines
1.3 KiB
Text
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);
|
|
}
|
|
}
|