mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Support multiple instances per host addr in auto metrics generation
This commit is contained in:
parent
b120f39bd7
commit
0c0769b1b2
1 changed files with 19 additions and 12 deletions
|
@ -414,28 +414,34 @@ function config_assign_metrics_ports(config: Management::Configuration)
|
||||||
[Supervisor::WORKER] = 3,
|
[Supervisor::WORKER] = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
local instance_metrics_start_port: table[string] of count;
|
local instance_metrics_start_port: table[addr] of count;
|
||||||
local instance_ports_set: table[string] of set[count];
|
local instance_ports_set: table[addr] of set[count];
|
||||||
|
local instance_addr_lookup: table[string] of addr;
|
||||||
local node: Management::Node;
|
local node: Management::Node;
|
||||||
|
local node_addr: addr;
|
||||||
|
|
||||||
# Pre-populate agents ports, if we have them:
|
# Pre-populate agents ports, if we have them:
|
||||||
for ( inst in config$instances )
|
for ( inst in config$instances )
|
||||||
{
|
{
|
||||||
instance_metrics_start_port[inst$name] = port_to_count(Management::Controller::auto_assign_metrics_start_port);
|
# build instance name -> addr lookup table
|
||||||
instance_ports_set[inst$name] = {};
|
instance_addr_lookup[inst$name] = inst$host;
|
||||||
|
|
||||||
|
instance_metrics_start_port[inst$host] = port_to_count(Management::Controller::auto_assign_metrics_start_port);
|
||||||
|
instance_ports_set[inst$host] = {};
|
||||||
if ( inst?$listen_port )
|
if ( inst?$listen_port )
|
||||||
add instance_ports_set[inst$name][port_to_count(inst$listen_port)];
|
add instance_ports_set[inst$host][port_to_count(inst$listen_port)];
|
||||||
}
|
}
|
||||||
|
|
||||||
# Pre-populate nodes with pre-defined metrics ports, as well
|
# Pre-populate nodes with pre-defined metrics ports, as well
|
||||||
# as their Broker ports:
|
# as their Broker ports:
|
||||||
for ( node in config$nodes )
|
for ( node in config$nodes )
|
||||||
|
node_addr = instance_addr_lookup[node$instance];
|
||||||
{
|
{
|
||||||
if ( node?$p )
|
if ( node?$p )
|
||||||
add instance_ports_set[node$instance][port_to_count(node$p)];
|
add instance_ports_set[node_addr][port_to_count(node$p)];
|
||||||
if ( node?$metrics_port )
|
if ( node?$metrics_port )
|
||||||
{
|
{
|
||||||
add instance_ports_set[node$instance][port_to_count(node$metrics_port)];
|
add instance_ports_set[node_addr][port_to_count(node$metrics_port)];
|
||||||
add new_nodes[node];
|
add new_nodes[node];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -467,17 +473,18 @@ function config_assign_metrics_ports(config: Management::Configuration)
|
||||||
for ( i in nodes )
|
for ( i in nodes )
|
||||||
{
|
{
|
||||||
node = nodes[i];
|
node = nodes[i];
|
||||||
|
node_addr = instance_addr_lookup[node$instance];
|
||||||
|
|
||||||
# Find next available port ...
|
# Find next available port ...
|
||||||
while ( instance_metrics_start_port[node$instance] in instance_ports_set[node$instance] )
|
while ( instance_metrics_start_port[node_addr] in instance_ports_set[node_addr] )
|
||||||
++instance_metrics_start_port[node$instance];
|
++instance_metrics_start_port[node_addr];
|
||||||
|
|
||||||
node$metrics_port = count_to_port(instance_metrics_start_port[node$instance], tcp);
|
node$metrics_port = count_to_port(instance_metrics_start_port[node_addr], tcp);
|
||||||
add new_nodes[node];
|
add new_nodes[node];
|
||||||
add instance_ports_set[node$instance][instance_metrics_start_port[node$instance]];
|
add instance_ports_set[node_addr][instance_metrics_start_port[node_addr]];
|
||||||
|
|
||||||
# ... and consume it.
|
# ... and consume it.
|
||||||
++instance_metrics_start_port[node$instance];
|
++instance_metrics_start_port[node_addr];
|
||||||
}
|
}
|
||||||
|
|
||||||
config$nodes = new_nodes;
|
config$nodes = new_nodes;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue