Waiting for Munin 2.0 - Native SSH transport
In the munin architecture, the munin-master has to connect to the munin-node via a very simple protocol and plain TCP.
This has several advantages:
- Very simple to manage & install
- Optional SSL since 1.4 enabling secure communications
- Quite simple firewall rules.
It has also some disadvantages:
- A new listening service means a wider exposure
- The SSL option might add some administrative overhead (certificates management, …)
- A native protocol isn’t always covered by all firewall solutions
- Some organisations only authorize a few protocols to simplify audits (ex: only SSH & HTTPS)
Native SSH
These down points may be solved by encapsulation over SSH, but it can be a tedious task to maintain if the number of hosts increases.
Therefore 2.0 introduces the concept of a native SSH transport. Its usage is dead simple : replace the address with an ssh:// URL-like one.
The node still has to be modified to communicate with stdin/stdout instead of a network socket. For now, only pmmn and munin-async are able to provide such a node.
Configuration
The URL is quite self-explanatory as shown in the example below:
[old-style-host]
address host.example.com
[new-style-host]
address ssh://munin-node-user@host.example.com/path/to/stdio-enabled-node --params
Installation notes
Authentication should be done without password but via SSH keys. The connection is from munin-user@host-munin to munin-node-user@remote-node.
If you use munin-async, the user on the remote node might only be a readonly one, since it only needs to read spooled data. This implies that you use --spoolfetch and not --vectorfetch that updates the spool repository.
Upcoming HTTP(S) transport in 3.0
And the sweetest part is that since all the work has been done for adding another transport, adding a CGI-based HTTP transport one is possible (and therefore done) for 3.0.