feat(monitors): a DNS monitor can name a resolver; the host page puts Ansible above Docker (#5214)
CI / lint (push) Successful in 2s
CI / integration (push) Successful in 53s
CI / unit (push) Successful in 1m19s
CI / publish (push) Successful in 1m20s

DNS monitors take an optional Resolver, a server's IP. Set, the check asks
that server directly for A and AAAA over UDP and records how long it took
to answer; empty keeps today's lookup through the container's resolver.
"Does my local DNS still answer for public names" and "does 1.1.1.1" are
now separate monitors. No new dependency.

On a host's page the Ansible card moves above the Docker list, which can
run to dozens of containers and hid it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 16:14:11 -04:00
co-authored by Claude Opus 5.5
parent c6fc02def5
commit 6788ce60f1
12 changed files with 270 additions and 26 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ def _form_opts(form, mtype: str) -> dict:
if mtype == MonitorType.tcp.value:
return {"port": form.get("port")}
if mtype == MonitorType.dns.value:
return {"expected_ip": form.get("expected_ip")}
return {"expected_ip": form.get("expected_ip"), "resolver": form.get("resolver")}
if mtype == MonitorType.http.value:
return {
"method": form.get("method"),