I wouldn’t say that there’s a typical Icinga stack one generally would recommend. I wouldn’t start comparing different stacks to each other, but the tools solving a specific purpose underneath.
From a personal experience, which includes reading source code and (development) docs for their interfaces, I’d rank them the following within the Icinga context. You can find such opinionated talks also in the Icinga Camp and OSMC archives.
This year’s OSMC holds some interesting talks in this direction too.
Logs & Events
- Elastic Stack. Their docs and product line evolved a lot, innovation and stability is key. Contra: Too many moving targets, languages, packages involved, also extra licenses for X-Pack.
- Graylog. Great filters and correlation analysis, RBAC management with AD integration ootb. Contra: Hard to create dashboard widgets compared to Kibana, always depends on a specific ES backend version. Not so many developers like Elastic though.
- Graphite. Everything is Open Source, used widely and metrics can be inserted from the past (RRDTool cannot do that). Contra: Python and missing package dependencies make it hard to install. Scaling sometimes needs replacements with addons (carbon-cache-ng, etc.).
- InfluxDB. Scaling and feature rich query language. Contra: Missing features just as partial deletes from data points. Distributed and large scale features are closed source enterprise only.
- RRDTool. Fast and simple API. Contra: No REST-like interface to query, impossible to alter metrics after insert. PNP on top solves a few points.
In combination with the above, Grafana is the one and only interface I’d always use in combination.
- Puppet. Descriptive and declarative language which defines the state, configuration and packages. Agent based with a central master. Contra: The weight between Open Source and Enterprise features is sometimes critical. They don’t like “The Foreman” project which competes with the PE console, adding a complete lifecycle system.
- Ansible. Direct via SSH, no master/agent involved. Contra: Needs direct SSH access, config language is yaml.
- Chef. (never used it, but I can see it being used for automated installs e.g. inside the GitLab package)
- Salt. (never used it, but active minion management sounds like a nifty idea)
If you say Puppet or Ansible, I say “The Foreman” including lifecycle management and monitoring integration. Provision machines with KVM (OpenNebula, OpenStack, etc.) and have them organized in a frontend.
More Integrations with Icinga Web 2 Modules
- Graphite & Grafana.
- Director for web based configuration and automated object sync rules from external sources (CMDB, AD, RDBMS, etc.)
- Visualization with NagVis, when needed.
- Custom Dashboards.
Always define the key elements your environment needs, and tackle the tools out there. There’s no single centric tool providing all of them, better weigh whether 3 tools and maintenance may solve the (manager’s) requirements.