What are DNS Monitors?
DNS monitors check that your DNS records resolve as expected. They help you catch misconfigurations, expired records, or propagation issues before they impact your users. Typical use cases include:- Detecting if your domain stops resolving to its IP address to prevent downtime
- Verifying that records resolve correctly when queried against a specific nameserver (e.g. 208.67.222.222 for OpenDNS) to catch resolver-specific issues
- Monitoring DNS response times to detect performance degradation or resolver latency
- Spotting slow or inconsistent DNS resolution across different regions
How do DNS monitors work?
DNS monitors perform lookups to verify your DNS configuration:- Query initiation: Checkly runs a DNS lookup from your configured location(s)
-
Resolver selection: The query is sent to a DNS resolver:
- Default: 8.8.8.8 (Google DNS)
- Automatic failover: If the default resolver returns an error code (SERVFAIL, NXDOMAIN, etc.), Checkly automatically retries with 1.1.1.1 (Cloudflare DNS), then an internal AWS resolver
- Custom resolver: You can specify a custom nameserver and port for testing resolver-specific behavior
- DNS chain resolution: The resolver queries the authoritative nameserver and retrieves the requested record type
- Response validation: The response is validated against your configured assertions
checklyhq.com
returns:
Supported DNS record types
DNS monitors support the following DNS record types:- A: IPv4 address records
- AAAA: IPv6 address records
- CNAME: Canonical name (alias) records
- MX: Mail exchange server records
- NS: Nameserver records
- SOA: Start of authority records
- TXT: Text records (SPF, DKIM, DMARC, etc.)
Limitations
DNS monitors are currently available through the UI only. Support for Monitoring as Code (CLI, Terraform, Pulumi) will be released in a future update. Check the changelog for updates.
- Private locations: DNS monitors do not currently support private locations. You can only run DNS monitors from Checkly’s global public locations.
Troubleshooting Common Issues
Users still hitting old IPs after DNS changes
Users still hitting old IPs after DNS changes
Symptom: DNS updated but users still reach old infrastructureRoot causes:
- TTL caching: Old records remain cached until TTL expires
- Resolver differences: Different DNS resolvers update at different times
- CDN caching: Content delivery networks may cache DNS responses independently
- Verify new IP is resolving: Use assertion
$.Answer[0].data
to check that the correct IP is returned - Monitor TTL timing: Add assertion
$.Answer[0].TTL
to track when records should fully propagate - Test multiple resolvers: Configure monitors with different nameservers (8.8.8.8, 1.1.1.1, custom) to verify all resolvers have updated
- Check multiple regions: Run monitors from multiple Checkly locations to catch regional propagation issues
Wrong number of DNS records returned
Wrong number of DNS records returned
Symptom: Expected multiple records (A, MX, NS, etc.) but getting fewer or more than expectedRoot causes:
- Dynamic infrastructure: Auto-scaling events add/remove instances
- Health checks: Load balancers automatically remove unhealthy instances from DNS
- Configuration drift: Manual changes not reflected in monitoring
- Set exact count assertion: Use
$.Answer.length
equalsX
for static infrastructure - Use range assertions: For auto-scaled systems, use
$.Answer.length
is greater than2
and less than10
- Monitor specific records: Use
$.Answer[?(@.data == '203.0.113.1')]
to verify critical IPs are present - Alert on unexpected changes: Set alerts to notify when record count deviates from baseline
$.Answer.length
equals 2
or greater.DNS works locally but fails for some users
DNS works locally but fails for some users
Symptom: DNS resolves from your network but fails for certain users or regionsRoot causes:
- Resolver behavior differences: Public resolvers (Google, Cloudflare, ISP) may have different caching policies or DNSSEC validation
- Geographic DNS routing: GeoDNS returns different results based on query location
- Corporate/ISP filtering: Organizations may block or redirect certain domains
- DNSSEC validation failures: Some resolvers enforce DNSSEC while others don’t
- Test multiple resolvers: Create separate monitors with different nameservers:
- Google DNS:
8.8.8.8:53
- Cloudflare DNS:
1.1.1.1:53
- OpenDNS:
208.67.222.222:53
- User-reported resolver: Custom IP
- Google DNS:
- Monitor from multiple locations: Run monitors from regions where users report issues
- Validate DNSSEC: Use
dig +dnssec
locally to check for DNSSEC issues - Check for hijacking: Compare responses across resolvers to detect DNS hijacking or filtering