From fa6361af56c056ec7093a267c471b047a309d83f Mon Sep 17 00:00:00 2001 From: Christian Kreibich Date: Mon, 1 Jul 2024 18:31:14 -0700 Subject: [PATCH] Management framework: propagate metrics port from agent This propagates the metrics port from the node config passed through the supervisor all the way into the script layer. --- scripts/base/frameworks/cluster/supervisor.zeek | 2 ++ scripts/policy/frameworks/management/agent/main.zeek | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/base/frameworks/cluster/supervisor.zeek b/scripts/base/frameworks/cluster/supervisor.zeek index 4e6ec51fff..ba0d676c6a 100644 --- a/scripts/base/frameworks/cluster/supervisor.zeek +++ b/scripts/base/frameworks/cluster/supervisor.zeek @@ -49,6 +49,8 @@ function __init_cluster_nodes(): bool @pragma pop ignore-deprecations if ( |manager_name| > 0 && cnode$node_type != Cluster::MANAGER ) cnode$manager = manager_name; + if ( endp?$metrics_port ) + cnode$metrics_port = endp$metrics_port; Cluster::nodes[node_name] = cnode; } diff --git a/scripts/policy/frameworks/management/agent/main.zeek b/scripts/policy/frameworks/management/agent/main.zeek index 7dbe963cf9..81ffe97252 100644 --- a/scripts/policy/frameworks/management/agent/main.zeek +++ b/scripts/policy/frameworks/management/agent/main.zeek @@ -520,6 +520,8 @@ function deploy_request_finish(areq: Management::Request::Request) if ( node?$interface ) cep$interface = node$interface; + if ( node?$metrics_port ) + cep$metrics_port = node$metrics_port; g_cluster[node$name] = cep; } @@ -618,7 +620,8 @@ function get_nodes_request_finish(areq: Management::Request::Request) # the respective boot.zeek scripts). if ( node in sns$node$cluster ) { - cns$cluster_role = sns$node$cluster[node]$role; + local cep: Supervisor::ClusterEndpoint = sns$node$cluster[node]; + cns$cluster_role = cep$role; # For cluster nodes, copy run state from g_nodes, our # live node status table. @@ -627,8 +630,11 @@ function get_nodes_request_finish(areq: Management::Request::Request) # The supervisor's responses use 0/unknown to indicate # unused ports. (Prior to Zeek 7 this used to be 0/tcp.) - if ( sns$node$cluster[node]$p != 0/unknown ) - cns$p = sns$node$cluster[node]$p; + if ( cep$p != 0/unknown ) + cns$p = cep$p; + + if ( cep?$metrics_port ) + cns$metrics_port = cep$metrics_port; } else {