With a single instance of Icinga2, we can check the status of remote services that are publicly accessible. For instance, we can check if SSH responds on a remote host. However, we can NOT check information that is not publicly accessible - for instance, whether the remote server has low disk space.
To handle this, we use a distributed Icinga2 infrastructure. Our original Icinga instance becomes a master instance. We also install a minimal version of Icinga on remote servers, known as satellite instances. Icinga2 has a wizard that establishes encrypted communication links between servers. We use a top-down configuration, which means that all checks are initiated from the master instance - but some service checks are configured to run on a different endpoint.
In our instance, that means that some checks run entirely on the master - e.g. an SSH check - but a "low disk space" check is scheduled on the master instance, which contacts the satellite, instructs it to run the plugin, and return the result.
Installing Icinga2 as a Satellite¶
Run the Ansible playbook. E.g.:
ansible-playbook --tags icinga2 main-playbook.yml
The manual commands are here:
Testing the Zones/Endpoints¶
After reloading Icinga2 on both satellite and master (happens automatically with Ansible), you should be able to see the new checks reflected in Icingaweb2 immediately, though they might be listed as "Pending". Click "Check now" to ensure they're working as expected.