I needed to make sure that Puppet was running smoothly on all production servers. For that purpose I needed to check 2 things :
- First that puppet was running every 30 minutes (I use cron and not Puppet daemon) . For that I simply use the nagios ‘check_file_age’ and I check the age of the “state.yaml” file. Here is my configuration on the command on Debian server:
/usr/lib/nagios/plugins/check_file_age -w 3780 -c 43200 -f /var/lib/puppet/state/state.yaml
- The first check make me sure that Puppet is running on a regular basis. However I am not sure that it run without problems. That’s the reason why I decided to use the Foreman Report status.
You can find my script on Github . To use it on a Debian server, you should install the dependencies :
# apt-get install libhttp-server-simple-perl libjson-perl # wget http://search.cpan.org/CPAN/authors/id/M/MC/MCRAWFOR/REST-Client-243.tar.gz # tar xvf REST-Client-243.tar.gz # cd REST-Client-243 # make # make install
To use it, it’s very simple:
$ /usr/lib/nagios/plugins/check_foreman_puppet_failure.pl -H webserver.example.com -F http://foreman.example.com -w 3 -c 5 -u username -p password
This command will check last reports of Puppet run. If the number of run with error state is greater than warning or critical then the nagios check will return the corresponding error.
Now, you can monitor your puppet run thanks to Nagios and Foreman !