From b80298a9ad377524c307be260aab7e0c22857aca Mon Sep 17 00:00:00 2001 From: Daniel Thayer Date: Tue, 5 Jul 2016 10:36:03 -0500 Subject: [PATCH] Change how logger node is detected in cluster framework Instead of assuming the logger node always has the name "logger", now broctl will set a boolean which the cluster framework scripts can use to determine if there is a logger node or not. Also removed one line from the manager node script, because it has to do with logging, which the logger.bro script handles. --- scripts/base/frameworks/cluster/__load__.bro | 10 +++++----- scripts/base/frameworks/cluster/main.bro | 6 ++++++ scripts/base/frameworks/cluster/nodes/manager.bro | 3 --- scripts/base/frameworks/cluster/setup-connections.bro | 7 ++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/base/frameworks/cluster/__load__.bro b/scripts/base/frameworks/cluster/__load__.bro index f89df8eb63..1717b833ae 100644 --- a/scripts/base/frameworks/cluster/__load__.bro +++ b/scripts/base/frameworks/cluster/__load__.bro @@ -26,18 +26,18 @@ redef peer_description = Cluster::node; ## Set the port that this node is supposed to listen on. redef Communication::listen_port = Cluster::nodes[Cluster::node]$p; -@if ( Cluster::local_node_type() == Cluster::LOGGER ) -@load ./nodes/logger -@endif - @if ( Cluster::local_node_type() == Cluster::MANAGER ) @load ./nodes/manager # If no logger is defined, then the manager receives logs. -@if ( "logger" !in Cluster::nodes ) +@if ( Cluster::manager_is_logger ) @load ./nodes/logger @endif @endif +@if ( Cluster::local_node_type() == Cluster::LOGGER ) +@load ./nodes/logger +@endif + @if ( Cluster::local_node_type() == Cluster::PROXY ) @load ./nodes/proxy @endif diff --git a/scripts/base/frameworks/cluster/main.bro b/scripts/base/frameworks/cluster/main.bro index cbb69df3d8..42a89d0795 100644 --- a/scripts/base/frameworks/cluster/main.bro +++ b/scripts/base/frameworks/cluster/main.bro @@ -127,6 +127,12 @@ export { ## Note that BroControl handles all of this automatically. const nodes: table[string] of Node = {} &redef; + ## Indicates whether or not the manager will act as the logger and receive + ## logs. This value should be set in the cluster-layout.bro script (the + ## value should be true only if no logger is specified in Cluster::nodes). + ## Note that BroControl handles this automatically. + const manager_is_logger = T &redef; + ## This is usually supplied on the command line for each instance ## of the cluster that is started up. const node = getenv("CLUSTER_NODE") &redef; diff --git a/scripts/base/frameworks/cluster/nodes/manager.bro b/scripts/base/frameworks/cluster/nodes/manager.bro index 28d45c0e55..e54b090522 100644 --- a/scripts/base/frameworks/cluster/nodes/manager.bro +++ b/scripts/base/frameworks/cluster/nodes/manager.bro @@ -19,9 +19,6 @@ redef Log::enable_remote_logging = T; ## Log rotation interval. redef Log::default_rotation_interval = 24 hrs; -## Alarm summary mail interval. -redef Log::default_mail_alarms_interval = 24 hrs; - ## Use the cluster's delete-log script. redef Log::default_rotation_postprocessor_cmd = "delete-log"; diff --git a/scripts/base/frameworks/cluster/setup-connections.bro b/scripts/base/frameworks/cluster/setup-connections.bro index bed1b3d28c..3f0586dcc3 100644 --- a/scripts/base/frameworks/cluster/setup-connections.bro +++ b/scripts/base/frameworks/cluster/setup-connections.bro @@ -33,9 +33,6 @@ event bro_init() &priority=9 } else if ( me$node_type == MANAGER ) { - # If no logger is defined, then the manager receives logs. - local managerlogs = "logger" !in Cluster::nodes; - if ( n$node_type == LOGGER && me$logger == i ) Communication::nodes["logger"] = [$host=n$ip, $zone_id=n$zone_id, $p=n$p, @@ -46,13 +43,13 @@ event bro_init() &priority=9 Communication::nodes[i] = [$host=n$ip, $zone_id=n$zone_id, $connect=F, $class=i, $events=worker2manager_events, - $request_logs=managerlogs]; + $request_logs=Cluster::manager_is_logger]; if ( n$node_type == PROXY && n$manager == node ) Communication::nodes[i] = [$host=n$ip, $zone_id=n$zone_id, $connect=F, $class=i, $events=proxy2manager_events, - $request_logs=managerlogs]; + $request_logs=Cluster::manager_is_logger]; if ( n$node_type == TIME_MACHINE && me?$time_machine && me$time_machine == i ) Communication::nodes["time-machine"] = [$host=nodes[i]$ip,