#1180 gave web-app-matrix a canonical `jitsi` domain for its own Jitsi and listed it under `services.jitsi.domains`. When Jitsi is shared or disabled nothing serves that domain, and the blackbox healthz job of web-app-prometheus probed every canonical domain, so the probe of https://jitsi.matrix.<domain>/healthz/ready failed with "tls: unrecognized name" and `prometheus scrape: every consumer role reports up=1 and passes its probe` went red (main run 40017166046: Matrix#2, Nextcloud#12). web_health_expectations already skipped such keys. The rule now lives in utils/domains/unserved.py: a key claimed by a service entity that is disabled, or enabled but shared, is not served by that app. The health filter uses it unchanged, and prometheus.yml.j2 filters its targets through the new `served_domains` filter, which also drops the `<key>_onion` mirror of a skipped key. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Webserver Health Check
Description
This role verifies that each NGINX-served domain returns an expected HTTP status code (200, 301, etc.) and alerts on deviations.
Overview
The role scans NGINX server block .conf files for domains, HEAD-requests each domain, compares the response against per-domain expected codes, and reports mismatches via sys-ctl-alm-compose. It is scheduled via a systemd timer for periodic health sweeps. Include this role and define on_calendar_health_NGINX. The role installs requests via pip automatically.
Cosmos
The diagram places Webserver Health Check in the Infinito.Nexus cosmos: the components it deploys (capabilities), the central services it consumes (dependencies), and its outward reach (federation and bridged external networks).
flowchart LR
subgraph role [sys-ctl-hlth-webserver 💻]
svc_webserver["webserver"]
end
Solid 1:1 edges are fixed relationships; dashed 0..1 edges are conditional (enabled only in matching deployments); red 0..0 edges are turned off in this role. Node markers show the role's deploy modes (💻 host, 🐳 compose, 🐝 swarm); ❌ marks a service that is explicitly turned off, and ⚙️ an Ansible role dependency declared in meta/main.yml.
Features
- Domain Detection: Scans NGINX server block
.conffiles for configured domains. - HTTP Status Verification: HEAD-requests each domain and compares the response against per-domain expected codes.
- Alerting: Reports mismatches via
sys-ctl-alm-compose. - Scheduled Execution: Integrates with a systemd timer for periodic health sweeps.
Further Resources
Credits
Implemented by Kevin Veen-Birkenbach. Part of the Infinito.Nexus Project and maintained by Kevin Veen-Birkenbach. Licensed under the Infinito.Nexus Community License (Non-Commercial).