Overview ======== To use the nagios resources, activate storeconfigs on the puppetmaster. Monitor ------- On one node the "nagios" class has to be included. This installs nagios and apache and configures the cgi on http://node/nagios/ Hosts ----- On a node which shall be monitored with nagios, include the "nagios::target". This just creates a host declaration for this hosts "$fqdn". Set the $nagios_parent variable in the node scope for enabling the reachability features of nagios. If a node needs more customisation, use the "nagios::host" component directly. To monitor hosts not managed by puppet, add "nagios::extra_host"s to the monitoring node. These can be used as intermediate $nagios_parent's Services -------- Services can be monitored by using the "nagios::service" component. The simplest form is:: nagios::service { check_dns: } The intention being obviously to put such declarations into a component defining a service, thereby being automatically applied together with all instances of the service. Caveats ======= Performance ----------- A major drawback is that currently the needed storeconfig setting and subsequent filling of the database is really a drag on performance. 0.22.1 for example breaks at approximatly 120 monitored services (depends on H/W of course). 0.22.3 has improved that my a factor of 3-4. Consistency/Validation/Verification ----------------------------------- After convergance of the configuration, the system is obviously consistent. That is, all defined services are monitored. The problem is though, that it is neither automatically valid - it is not guaranteed that all components declare a nagios::service - and even if the configuration is valid it definitly is unverified, since that is always a judgment call for an external observer. Examples ======== Usage example:: node nagios { include nagios # Declare another nagios command nagios::command { http_port: command_line => '/usr/lib/nagios/plugins/check_http -p $ARG1$ -H $HOSTADDRESS$ -I $HOSTADDRESS$' # Declare unmanaged hosts nagios_extra_host { "router01": parent => "gateway", ip => "10.0.0.1"; "router02": parent => "router01", ip => "192.168.0.1"; } } node target { # Monitor this host $nagios_parent = "router01" include nagios_target # monitor a service $apache2_port = 8080 include apache # The apache class actually does this somewhere: #nagios::service { "http_${apache2_port}": # check_command => "http_port!${apache2_port}" #} # which goes via export/collect to the nagios node. } License ======= Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at> See the file LICENSE in the top directory for the full license.