Management framework: control output-to-console in Supervisor

It helps during testing to be able to control whether the Supervisor process
also routs node output to the console, in addition to writing to output
files. Since the Supervisor runs as the main process in Docker containers, its
output becomes visible in "docker logs" that way, simplifying diagnostics.
This commit is contained in:
Christian Kreibich 2022-06-13 21:12:42 -07:00
parent 5592beaf31
commit 0c20f16055
2 changed files with 16 additions and 4 deletions

View file

@ -7,6 +7,18 @@ export {
## Supervisor. The agent subscribes to this.
const topic_prefix = "zeek/management/supervisor" &redef;
## Whether to print the stdout sent up to the Supervisor by created
## nodes to the terminal. By default, this is disabled since this output
## already ends up in a node-specific stdout file, per
## :zeek:see:`Management::Node::stdout_file`.
const print_stdout = F &redef;
## Whether to print the stderr sent up to the Supervisor by created
## nodes to the terminal. By default, this is disabled since this output
## already ends up in a node-specific stderr file, per
## :zeek:see:`Management::Node::stderr_file`.
const print_stderr = F &redef;
## The maximum number of stdout/stderr output lines to convey in
## :zeek:see:`Management::Supervisor::API::notify_node_exit` events.
const output_max_lines: count = 100 &redef;

View file

@ -70,7 +70,7 @@ hook Supervisor::stdout_hook(node: string, msg: string)
# Update the sliding window of recent output lines.
Queue::put(g_outputs[node]$stdout, msg);
# Don't print this message in the Supervisor's own stdout
if ( ! print_stdout )
break;
}
@ -87,7 +87,7 @@ hook Supervisor::stderr_hook(node: string, msg: string)
Queue::put(g_outputs[node]$stderr, msg);
# Don't print this message in the Supervisor's own stdout
if ( ! print_stderr )
break;
}