Icinga: Monitoring as a part of a holistic infrastructure
Icinga makes monitoring, something so many of us do poorly, a lot easier. One of the greatest things about Icinga is that it was created with configuration management in mind. It uses a file-based configuration structure while also having a robust API to encourage remote automation and triggering of events.
As we started adopting Icinga as our main monitoring solution across the board at OlinData, it became even clearer that we wanted this deeply integrated into the platform we were deploying in our clients’ infrastructures. In late 2015 we began building a product to automate what we were already doing manually by creating OpsTheater. Icinga 2 is one of the core components in OpsTheater. This allows us to do a bunch of cool stuff right from the start.
Monitor all of OpsTheater
Because we write the puppet-glue between all the OpsTheater components it becomes very easy to make sure the OpsTheater core tooling is all monitored from the very beginning. We know if all the components of OpsTheater are up and running, if the disks are getting full, or the servers CPUs are too saturated, when the last puppet run on a machine was too long ago, or when Elasticsearch stops accepting logs.
Monitor everything else
Since monitoring is already installed with OpsTheater with numerous implementation examples on our own platform, it makes it easier for your team to adapt and adopt monitoring into your organization. There are numerous templates we’ve created and embedded to monitor everything from an Apache Server, to making sure your routers are functioning properly. Icinga 2’s roots are built from Nagios, so it can use the depth of plugins created for Nagios created to monitor just about everything. This makes it require very little effort from your team to monitor things like AWS, DigitalOcean, Cisco devices, and services of all kinds on any operating system.
Easily create monitoring profiles for standard tools.
Because we use puppet to glue the parts of OpsTheater together, we have created puppet profiles for different pieces of software that many clients use. Those profiles already include all the metrics someone would typically like to monitor for those tools anyway, making the whole monitoring deployment a bit easier. Now, all we need to include on a webserver is the opstheater::profile::icinga::nginx puppet class and presto, nginx is monitored.
Standardize monitoring across OpsTheater users
By using OpsTheater in different environments we learn a lot. Usually those lessons are not specific to that environment, so why not apply those lessons in OpsTheater and make them available for all users? Bit by bit all of the environments will have much better monitoring, which in the end benefits all involved.