Using m4 with Nagios: Advanced Ideas
24 February 2011 3 Comments
Nagios configuration has been traditionally cumbersome and extensive; there are a lot of things to configure. The addition of templating some time ago helped, but not entirely. A configuration element such as a server or a switch can take up a huge amount of configuration and be quite repetitive, too.
Using m4 can alleviate all of these problems. When combined with GNU Make and Nagios configuration directories, changing the configuration can be done quite simply and easily.
With this beginning of a Makefile in
/etc/nagios, all *.cfg files will be converted to *.m4 files as they are included as
%.cfg : %.m4
$(M4) -I conf.d/includes < $< > $*.cfg
With this default rule in place, and all configuration files in the
conf.d directory can be converted with this
This uses the GNU Make
wildcard function to generate a list of files easily. Other directories
can be added with new calls to the
wildcard function; it is not recursive and won’t descend
Finish off the Makefile with these:
service nagios3 restart
.PHONY: all restart
This makes it possible to put the m4 files into
conf.d (with matching cfg file or it won’t activate!) and use
a library of predefined macro files included in
conf.d/includes. If make is called with
make restart then all
configuration files will be processed by m4 as needed and Nagios will be reloaded.
M4 should be included in the base Linux install – but often isn’t. Load it and use it today!