From 35ab9d5c807a43de43f5fd8c4dee505eade0fc22 Mon Sep 17 00:00:00 2001 From: Christian Kreibich Date: Wed, 23 Apr 2025 23:46:43 -0700 Subject: [PATCH] Add basic btest to verify that Broker peering telemetry is available. --- .../Baseline/broker.telemetry/manager.out | 4 ++ .../Baseline/broker.telemetry/worker.out | 4 ++ testing/btest/broker/telemetry.zeek | 55 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 testing/btest/Baseline/broker.telemetry/manager.out create mode 100644 testing/btest/Baseline/broker.telemetry/worker.out create mode 100644 testing/btest/broker/telemetry.zeek diff --git a/testing/btest/Baseline/broker.telemetry/manager.out b/testing/btest/Baseline/broker.telemetry/manager.out new file mode 100644 index 0000000000..ce348b2b02 --- /dev/null +++ b/testing/btest/Baseline/broker.telemetry/manager.out @@ -0,0 +1,4 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +Telemetry::COUNTER, zeek, zeek_broker_peer_buffer_overflows_total, [endpoint, peer], [manager, worker] +Telemetry::GAUGE, zeek, zeek_broker_peer_buffer_messages, [endpoint, peer], [manager, worker] +Telemetry::GAUGE, zeek, zeek_broker_peer_buffer_recent_max_messages, [endpoint, peer], [manager, worker] diff --git a/testing/btest/Baseline/broker.telemetry/worker.out b/testing/btest/Baseline/broker.telemetry/worker.out new file mode 100644 index 0000000000..b2486b0ace --- /dev/null +++ b/testing/btest/Baseline/broker.telemetry/worker.out @@ -0,0 +1,4 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +Telemetry::COUNTER, zeek, zeek_broker_peer_buffer_overflows_total, [endpoint, peer], [worker, manager] +Telemetry::GAUGE, zeek, zeek_broker_peer_buffer_messages, [endpoint, peer], [worker, manager] +Telemetry::GAUGE, zeek, zeek_broker_peer_buffer_recent_max_messages, [endpoint, peer], [worker, manager] diff --git a/testing/btest/broker/telemetry.zeek b/testing/btest/broker/telemetry.zeek new file mode 100644 index 0000000000..3008dd72f0 --- /dev/null +++ b/testing/btest/broker/telemetry.zeek @@ -0,0 +1,55 @@ +# @TEST-DOC: run a mini two-node cluster and check that Broker's peering telemetry is available. +# +# @TEST-PORT: BROKER_PORT +# +# @TEST-EXEC: btest-bg-run manager ZEEKPATH=$ZEEKPATH:.. CLUSTER_NODE=manager zeek -b manager.zeek +# @TEST-EXEC: btest-bg-run worker ZEEKPATH=$ZEEKPATH:.. CLUSTER_NODE=worker zeek -b worker.zeek +# @TEST-EXEC: btest-bg-wait 15 +# +# @TEST-EXEC: btest-diff manager/out +# @TEST-EXEC: btest-diff worker/out + +# @TEST-START-FILE cluster-layout.zeek +redef Cluster::nodes = { + ["manager"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT"))], + ["worker"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1, $manager="manager"], +}; +# @TEST-END-FILE + +# @TEST-START-FILE common.zeek +@load base/frameworks/cluster +@load policy/frameworks/cluster/experimental + +redef exit_only_after_terminate = T; +redef Log::enable_local_logging = T; +redef Log::default_rotation_interval = 0secs; +redef Cluster::retry_interval = 1sec; + +function print_metrics(metrics: vector of Telemetry::Metric) + { + local f = open("out"); + + for (i in metrics) + { + local m = metrics[i]; + print f, m$opts$metric_type, m$opts$prefix, m$opts$name, m$label_names, m?$label_values ? m$label_values : vector(); + } + + close(f); + } + +event Cluster::Experimental::cluster_started() + { + local broker_metrics = Telemetry::collect_metrics("zeek_broker_peer_buffer*", "*"); + print_metrics(broker_metrics); + terminate(); + } +# @TEST-END-FILE + +# @TEST-START-FILE manager.zeek +@load ./common.zeek +# @TEST-END-FILE + +# @TEST-START-FILE worker.zeek +@load ./common.zeek +# @TEST-END-FILE