Let me suggest the following, if 3 is the recommended number of monitors:
```ruby
nodes_by_pref = [ storage_nodes, controller_nodes, nodes ].flatten.uniq{|n| n.name}
monitor_nodes = nodes_by_pref.take(3)
```