DNS Monitoring Support
PulseMonitor now supports monitoring DNS servers by issuing real DNS queries and verifying the response. Unlike ICMP, which only confirms a host is reachable, this verifies the DNS service is actually answering queries correctly, catching cases where a resolver is running but misconfigured, returning empty responses, or serving stale data.
Configuration
[monitors.pulse.dns]
host = "8.8.8.8"
query = "google.com"
recordType = "A"All of the common record types are supported: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV, TXT, and ANY. Queries default to UDP on port 53, but protocol = "tcp" is available for large responses or strict firewall environments, and port can be overridden for non-standard setups.
Answer Validation
By default a response only counts as healthy if it contains at least one answer record and returns a NoError (RCODE 0) status. For authoritative zones where you want to verify a specific record exists, expectedValue lets you assert that a substring must appear in at least one answer:
[monitors.pulse.dns]
host = "ns1.internal.example.com"
query = "api.internal.example.com"
recordType = "A"
expectedValue = "10.0." # Must resolve to a 10.0.x.x addressThis is useful for catching split-brain DNS issues or detecting when an authoritative server starts handing out wrong answers.
Custom Metrics
The number of answer records returned is exposed as both {custom1} and {answerCount} in the heartbeat URL, making it easy to spot DNS servers that are technically up but returning empty or partial result sets - a common failure mode for misconfigured authoritative servers or resolvers under attack.
[monitors.heartbeat]
url = "https://uptime.example.com/api/push/TOKEN?latency={latency}&answers={answerCount}"Dependency Updates
All dependencies have been updated to their latest versions.