Icinga is a monitoring system built on the check-plugin model, rewritten from the ground up as Icinga 2. It keeps the interface that made that model ubiquitous — a plugin is any executable that returns exit code 0, 1, 2 or 3 and prints a status line with optional performance data — so the entire Monitoring Plugins catalogue and every internal check script an organisation has written continue to work unchanged. What it replaced is everything around them.
The first replacement is the configuration. Icinga 2 has a real domain-specific language rather than a flat object file: objects and templates with multiple inheritance, custom variables held as dictionaries and arrays, apply rules that generate services and notifications across matching hosts, apply-for loops that iterate a dictionary to create one service per disk, port or URL, functions, conditionals and variable scoping. A well-written Icinga configuration describes intent — every host with this custom variable gets these checks — rather than enumerating thousands of static definitions.
The second is distribution. Icinga 2 clusters are a tree of zones containing endpoints that authenticate to each other with certificates issued by the built-in CA. Configuration is synchronised downward from master to satellite to agent, check results and state flow upward, and two endpoints in the same zone give high availability with automatic split of check scheduling and notification duty. That one mechanism covers three separate needs: HA at the master, distributed collection at remote sites, and agent-based checks on hosts that cannot be reached directly. Around the core sit Icinga Web 2 with its module system, Icinga DB backed by Redis and a relational store, Icinga Director for database-driven configuration with import sources and sync rules that create objects from a CMDB or cloud API, graphing through Graphite or InfluxDB, business process modelling, and a REST API exposing objects, actions and an event stream.
Why this skill matters now
Monitoring estates built on Nagios in the 2000s are still in production, and their configuration has become the problem. Tens of thousands of static host and service definitions, generated by scripts nobody owns, with no way to express a rule and no path to automation — that is the state a lot of teams are actually in. Icinga 2 is the migration target that does not require abandoning the check plugins, the thresholds or the operational habits those estates depend on, which is why the move happens and why engineers who can execute it are in demand.
The skill being hired for is specifically configuration engineering. Apply rules, apply-for loops over custom variable dictionaries, template inheritance and Director import and sync rules are what turn a monitoring system into something that configures itself from a source of truth. A team that masters them adds a hundred hosts by updating a CMDB; a team that does not adds a hundred hosts by writing a hundred files, and the difference compounds every quarter.
Distributed monitoring is the other reason. Multi-site, multi-tenant, DMZ-separated and edge estates need collection close to the target with results aggregated centrally, and Icinga's zone model handles that natively with mutual TLS and configuration sync rather than through bolted-on relays. Designing a zone hierarchy correctly — and troubleshooting one that was not — is genuinely hard, hard enough that it is the part organisations bring a trainer in for.