Hi Alex,
sounds ambitious. But you might be able to reduce the scope massively by relying on existing tools.
Examples:
Let something like Nagios do the monitoring. I know there's tools to control Nagios from Haskell. What I don't know is how up-to-date they are, and I haven't seen something that reports internal performance data of a Haskell app to Nagios, but that should be simple if necessary.
Let something like Cassandra handle both the heaviest parts of messaging between your node controllers and the storage of their config data. If you base your WUI on top of the DB, you can separate it from the controllers as well.
Coordination of resources is a variant of scheduling, which is a ""solved"" problem. So there should be libraries you can use.
Logging has been worked on by many a commercial Haskeller. My guess is that filtering is just a matter of looking at one of the libraries from the right angle.
This leaves orchestration, API connectors, and the DSL as the missing parts. Which sounds way more doable than having your tool do all the lifting itself.
Or just use Kubernetes. Whichever is easier. ;)
Cheers,
MarLinn