Skip to content

v0.6.1

Latest

Choose a tag to compare

@zigazajc007 zigazajc007 released this 15 May 16:33

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 address

This 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.