Icinga Web 2 is a monitoring framework first and a web page second
A lightweight and extensible web interface to keep an eye on your environment. Analyse problems and act on them.
At a glance
- What is it?
- Icinga Web 2 ships as a PHP web interface, application framework and command line tool for Icinga 2 and Icinga DB Web, and most of its real behavior lives in the module directory rather than in the core.
- Who is it for?
- Icinga Web 2 suits teams that already run Icinga 2 or Icinga DB Web and want a PHP surface to build modules on, but it is a poor fit for a small install that needs one clean status page, and anyone adopting it should first read the installation chapter linked from the README, then confirm in the doc/ directory which data source and module versions their release supports.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly PHP, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One repository, three roles: interface, framework and CLI
Icinga Web 2 is described as the next generation open source monitoring web interface, framework and command line interface, developed by the Icinga GmbH. That single sentence carries three separate products, and the split matters for anyone deciding whether to adopt it. The web interface is the part most operators picture: a login, a dashboard, host and service views. The framework is the part that decides what features exist at all. The command line interface is the part that lets you drive the same configuration and module set from a shell during provisioning.
The problem it solves is not monitoring itself. Monitoring is the job of the backend, and Icinga Web 2 explicitly supports two of them, Icinga 2 and Icinga DB Web, along with a wide range of additional modules. What it solves is the gap between a raw check engine and a human being who needs to see and act on results without writing queries by hand every time. The audience is therefore infrastructure engineers, platform teams and site reliability engineers who already have a monitoring backend and want a maintained front end with an extension path.
The topics listed for the project include cli, icinga and monitoring, which matches that framing. This is not a tool for people who want to start monitoring from zero, and the homepage points newcomers to a general get started page rather than to a bundled demo.
The modules directory is where the product's behavior actually lives
Look at the top level layout of the repository and the structure of the project becomes clear: application/, library/, modules/, public/, schema/, test/, bin/, etc/, and doc/. The application directory holds the core, library the shared code, public the web root, and test the automated checks. The directory that decides what an operator sees is modules.
That structure has a direct consequence. The core provides the framework, the authentication layer, the navigation, the routing and the views, and everything above that layer arrives as a module. The project's own screenshot in the README is labeled as the Icinga Web 2 monitoring module, which is a useful hint: even the flagship screen is a module sitting on the framework. The README states that Icinga Web 2 supports Icinga 2, Icinga DB Web and many more modules, so the module set, not the core, is where the actual feature surface of any given deployment comes from.
For an engineer this is the interesting part and also the risky part. You can add functionality without forking the core, and the presence of a separate modules/ directory alongside library/ and application/ suggests a clean seam between the platform and the extensions. The tradeoff is that a deployment is only as good as the module versions it pins, and the repository does not describe version compatibility in the README itself, so that check has to happen in the documentation rather than by reading the code.
Icinga 2 and Icinga DB Web are two different data sources behind one interface
Both Icinga 2 and Icinga DB Web are named as supported backends, and choosing between them is a decision the interface deliberately does not make for you. The framing the README uses is that Icinga Web 2 supports each of them, which implies a single front end over two quite different storage arrangements rather than one canonical path.
The difference in approach is real and it is not cosmetic. A setup reading directly from Icinga 2 keeps the check engine as the source of truth, while a setup built around Icinga DB Web reads from a database schema, and the repository even ships a schema/ directory for that purpose. Same screens, same modules, different backing store and different operational consequences, especially around query cost at scale and around the pipeline between check execution and display.
The documentation gap is worth naming plainly. The README does not explain the migration path between the two, does not say whether both can be fed simultaneously, and does not state whether a given module supports both equally. If you are evaluating a stack where the backend choice is still open, that is the question to raise before anything else, because choosing a front end and a data source in the wrong order is how monitoring deployments end up with modules that only half work.
Installation is delegated to the docs site, not to the repository
This project does not ship an installation script you can copy from its front page, and that is a deliberate choice rather than an omission. The README sends installers to a specific chapter on the documentation site, and the file listing confirms the same division of labor: the doc/ directory sits in the repository, and the same documentation is published online.
For a reader who wants a first run, the practical sequence is therefore short. Get the source, find the installation chapter linked from the README, and work through it there, because the README deliberately carries no command lines of its own. The upstream pointers are the documentation chapter and the hosted documentation, with the homepage pointing to the get started flow for orientation.
The reason to note this rather than hide it is that it changes what you can verify before committing. There is no quick start in the repository, no docker-compose file at the top level, and no dependency list in the README beyond the file names in the tree. The tree does reveal that this is a Composer based PHP project, with composer.json at the root, alongside phpunit.xml for the test suite, phpcs.xml for style checks, phpstan.neon and phpstan-baseline.neon for static analysis. Anyone planning an install should expect to read the documentation and to set up a PHP runtime and a database, then choose which modules to enable.
Static analysis, style rules and a baseline file live in the repository root
Several root level entries describe how the project itself is kept honest, and they say something about what a fork costs. phpcs.xml defines the coding standard, phpstan.neon enables static analysis, and phpstan-baseline.neon records the known findings that are tolerated rather than fixed. phpunit.xml points at the test suite, and test/ holds it. icingaweb2.ruleset.xml is a separate ruleset definition, and .github/ holds the workflow definitions.
A baseline file is an honest artifact. It says there are known issues that the analysis run does not fail on, which is normal for a project of this age and size, and it also means the toolchain is strict enough that a blanket pass would otherwise be unrealistic. The practical consequence for an adopter is that a fork inherits not only the code but also the lint and analysis configuration, so an upgrade from upstream can conflict with local changes at the tooling layer as easily as in the application code.
The naming conventions follow the usual open source hygiene: CHANGELOG.md, CONTRIBUTING.md, RELEASE.md, SECURITY.md, AUTHORS, VERSION and LICENSE.md at the root. The presence of a dedicated SECURITY.md together with a separate security reporting page on the project website tells you that vulnerability reports have a defined route, which matters for a component that sits in front of production infrastructure.
Three tagged releases in a year and a push on 2026-10-19
The project's release history is visible in the tags: v2.12.6 on 2025-11-19, v2.13.0 on 2026-04-01 and v2.14.0 on 2026-07-06. That is two minor feature releases and one patch release across roughly nine months, which is a measured cadence rather than a continuous stream. The last push was on 2026-10-21, so the code tree is current and the repository is not archived.
Minor releases in the 2.x line with patch releases in between is a healthy pattern for a framework that other teams extend. It also tells you something about upgrade cost. A patch release inside a minor series is usually low risk, but moving between 2.12, 2.13 and 2.14 means checking which module versions match, and modules are precisely the part that is not covered by the core's own change notes. Any team on this software needs a staging environment where the module set can be exercised before the core is moved forward.
The licensing is the GNU General Public License Version 3, covering both Icinga Web 2 and its documentation, with a copy of the license in LICENSE.md in the source package. Anyone planning to modify the interface and deploy the modified version to a network of systems is dealing with copyleft obligations around source availability, and while this is not legal advice, it is a factor to raise with whoever owns the deployment policy, particularly for agencies that resell managed monitoring.
Where Icinga Web 2 is the wrong choice
Two situations stand out. The first is a small install that needs one reliable status page. Icinga Web 2 is a framework with a module system, a CLI and a plugin architecture, and that weight is only justified when you actually want the extension points. If the requirement is a handful of host checks with no custom views, the same project is more machinery than the problem needs, and the module and dependency surface becomes pure overhead.
The second is an environment where you cannot run PHP and a web server alongside a database. The project is a PHP application with a Composer manifest, a web root in public/ and a schema layer, so a deployment that avoids a PHP runtime is not supported at all. There is no static or embedded mode described in the documentation, and no indication that the interface can run without its backing store.
There is also a clear limit on what the project promises. The README is short and deliberately high level. It does not document upgrade procedures, does not list module compatibility, does not cover backup or rollback of configuration, and does not describe the API surface in any detail. The documentation site fills in much of that, but if you need a specific answer confirmed in writing before adopting, you should look for it in the doc/ directory or ask through the community channels and partner support channels the project lists.
Editorial conclusion
Icinga Web 2 suits teams that already run Icinga 2 or Icinga DB Web and want a PHP surface to build modules on, but it is a poor fit for a small install that needs one clean status page, and anyone adopting it should first read the installation chapter linked from the README, then confirm in the doc/ directory which data source and module versions their release supports.
Frequently asked questions
What does Icinga Web 2 need before it can be installed?
The README contains no installation commands and points instead to the installation chapter in the project documentation. The repository layout shows a Composer based PHP project with composer.json at the root, a web root in public/ and a schema/ directory, so a PHP runtime and a database are part of the expected setup.
Is Icinga Web 2 still actively maintained?
The last push was on 2026-10-21 and the repository is not archived. Tagged releases include v2.14.0 on 2026-07-06, v2.13.0 on 2026-04-01 and v2.12.6 on 2025-11-19, so work continues on the 2.x line.
Can I extend Icinga Web 2 with my own module?
Icinga Web 2 is described as a web interface, a framework and a command line interface, and the repository keeps modules/ separate from application/ and library/. The README notes support for Icinga 2, Icinga DB Web and many more modules, so the module directory is the intended extension point.
Which monitoring backend should I use with Icinga Web 2?
Both Icinga 2 and Icinga DB Web are listed as supported, and the interface reads from whichever you configure. The README does not document how to move between them or whether a given module works with both, so that comparison has to come out of the documentation for your chosen versions.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/icinga-icingaweb2)Was this useful?