Puppetlabs released PuppetDB last Friday. It’s a drop-in replacement for the existing stored configurations backends and the inventory service. Stored configurations have always been a performance bottleneck in my puppet installations, so I was eager to try it out.
I had it up and running, completely puppetized within a couple of hours. This was mainly due to my unfamiliarity with Postgres and having to repurpose some of the existing postgres modules on the forge to suit my needs. Once I had it up and running, I immediately saw a performance boost - my catalog compilation times dropped like a rock to about 33% of where they used to be (notice the big cliff on the right):
PuppetDB exposes a bunch of metrics so you can monitor all sorts of information. I cherry-picked a few and built some Nagios plugins. You can find those on Github.
My only issue so far is that node removal via
puppet node clean <node_name> doesn’t appear to be working correctly. This isn’t a big deal for me right now as I’m not spinning down machines very often, but if you’re utilizing the cloud and spinning machines up/down a lot, you might have to figure out a workaround until the guys at Puppetlabs get it sorted out.