13.3. Organizing Nagios' Configuration Files Sanely

You're looking at the sample configuration files in /usr/local/nagios/etc and studying the documentation, and you realize that you're going to be managing a whole lot of interdependent files. How are you going to keep track of everything?

A simple hack to keep your sanity is to use a single directory to store all configuration files—with three exceptions, which we'll get to in a moment—and then use the cfg_dir option in nagios.cfg instead of the cfg_file option to include them. cfg_dir means "use all the files in this directory," so you can easily control which files Nagios uses by simply adding or removing them. This is easier than keeping track of a herd of individual cfg_file options.

This is what the default /usr/local/nagios/etc directory looks like after following the previous recipes:

	$ cd /usr/local/nagios/
	$ tree etc
	etc
	|-- cgi.cfg-sample
	|-- commands.cfg-sample
	|-- htpasswd.users
	|-- localhost.cfg-sample
	|-- nagios.cfg-sample
	`-- resource.cfg-sample
	
	|-- bigger.cfg-sample
	|-- cgi.cfg-sample
	|-- commands.cfg-sample
	|-- minimal.cfg-sample
	|-- misccommands.cfg-sample
	|-- nagios.cfg-sample
	`-- resource.cfg-sample

I like to organize them like this:

	$ tree --dirsfirst etc
	etc
	|-- lan_objects
	|   |-- commands.cfg
	|   |-- contacts.cfg
	|   |-- hosts.cfg
	|   |-- commands.cfg
	|   |-- services.cfg
	|   `-- timeperiods.cfg
	|-- sample
	|-- |cgi.cfg-sample
	|   |-- commands.cfg-sample
	|   |-- localhost.cfg-sample
	|   |-- nagios.cfg-sample
	|   `-- resource.cfg-sample
	|-- cgi.cfg
	|-- htpasswd.users
	|-- nagios.cfg
	`-- resource.cfg

How do all those files get there? First, move all the sample files into the sample/ directory. Then, enter the sample/ directory and copy these files into etc/ and lan_objects/:

	$ cd etc
	# mkdir lan_objects
	# mkdir sample
	# mv *sample sample
	# cd sample
	# cp cgi.cfg-sample ../cgi.cfg
	# cp resource.cfg-sample ../resource.cfg
	# cp commands.cfg-sample ../lan_objects/commands.cfg

The rest will be created as we need them in the next few recipes.

See the next recipe to learn how to configure Nagios to use your nice new directory organization, and to get started monitoring the local system.

All Nagios configuration files must end in .cfg.

You are perfectly welcome to use a graphical file manager to shuffle everything around. It's easier and faster.

cgi.cfg, nagios.cfg, and resource.cfg are the primary Nagios configuration files, so they don't go with the others. htpasswd.users must be in the same directory as nagios.cfg.

The files in the lan_object/ directory are called object files. A Nagios object is a single unit, such as a host, a command, a service, a contact, and the groups they belong to. These objects are inheritable and reusable, which simplifies administration.