Check if puppet agent is up to date
Solution 1:
I wrote a simple check_puppet NRPE script that does most of what you want. It's based on RI Pienaar's original which was more than I needed. In both cases we parse /var/lib/puppet/state/last_run_summary.yaml to see the state of the last agent run.
I don't see the advantage of using a third piece of software to compare the catalog versions between the master and agent when a normal agent run should provide enough data to alert properly.
Solution 2:
Here's what we do:
In our setting we have a wrapper script around calling puppet agent --test
that also checks for some environment settings like existence of a "stopper file" that allows logged-in admins to disable automation temporarily.
In the wrapper script we touch a state file (/var/state/puppet-run) everytime that the puppet agent exits with status code 0.
We then track the age of this file to determine whether it's older than e.g 1.5 times the time between puppet runs.