[Zeek] Request for Feedback - Zeek Process Supervision Model

Seth Hall seth at corelight.com
Fri Mar 22 07:30:11 PDT 2019


On 19 Mar 2019, at 16:06, Samuel Oehlert wrote:

> Personally, I think it would be poor design to rebuild host OS 
> monitoring
> inside the Zeek supervisor. I think that should be left up to the many
> other projects specifically designed to monitor disk usage, etc. That 
> being
> said, exposing some metrics about Zeek the application layer sounds 
> like it
> would be a win. That being said, that might be outside the scope of a
> supervisor as well.

Just tell yourself that all of the processes that are being spawned and 
supervised are just threads and then you may think about this project 
differently.  The fact that we will be spawning and monitoring child 
processes is merely an implementation detail.  If we chose to offset the 
responsibility for starting and managing all of the process to something 
like systemd then it would specifically tie us to systemd (and we 
definitely don't want to maintain compatibility with multiple 
supervisors).

The benefit to this approach is that from the OS perspective it's easy 
to run under any system supervisor and in Docker since it effectively 
has the same model of "run in the foreground and monitor that the 
process is still alive".  There is an additional benefit too because 
we've been discussing doing an "early fork" of the supervisor process so 
that they all derive from the same binary (same initial memory image) 
which you can think of like a stem cell so the supervisor can tell it to 
fork again and specialize into a particular cluster process.  This has 
the benefit of being sure that all of the processes are the same.  
Otherwise, if systemd restarted one of the workers and the binary on 
disk had changed in the intervening time it would end up being a 
different process (different version of Zeek?).  I know it's a somewhat 
contrived example but it's always surprising to see the problems that 
will be encountered in the real world so the more potential problems we 
can avoid up front in the design is probably better.

Another benefit to this approach is that a full cluster can be started 
from the command line really easily and will run in the foreground.  
It's been really fascinating using the prototype as it is.

   .Seth

--
Seth Hall * Corelight, Inc * www.corelight.com


More information about the Zeek mailing list