Skip to main content

DNS Monitoring

A DNS monitor asks for one record type on one name and reports what came back. It answers two questions: does the name resolve at all, and does it resolve to the value you expect. It says nothing about the service behind the name — that is a different monitor.

Check your DNS records every minute
Free, no card: up to 55 monitors, alerts in Telegram or by email.
Add a DNS record

What It Is For

The name stopped resolving

A zone that was deleted, a delegation that broke after a registrar change, nameservers that stopped answering. Your servers are fine and nobody can reach any of them. A DNS monitor names that cause in one line instead of an hour of guessing.

example.comNS

The record changed behind your back

Write down the value you expect and the monitor goes down the moment the answer stops containing it. This catches a hijacked or hacked account, a colleague editing the wrong zone, a migration that half rolled back, and a CDN or SaaS provider that moved your name somewhere new.

A203.0.113.10A198.51.100.7

The records nobody looks at until something breaks

MX records that route your mail, TXT records holding SPF, DKIM or a provider's domain verification, NS records that carry the delegation, a CNAME pointing at a CDN. Nothing alerts you when one of these disappears — mail just stops being delivered, or a service quietly says your domain is no longer verified.

MXNSTXT

How long resolution takes

Every check records the time the lookup took. Slow DNS is added to the front of every single request a visitor makes, and it is invisible in server-side timings.

DNSHTTPms

What It Is Not For

A DNS monitor reads a record. It never connects to whatever that record points at:

You want to knowUse instead
Is the domain registration about to expire? This is the most common mix-up. Records keep resolving normally right up to the day the registry pulls the domain — a DNS monitor gives you no warning at all, it goes down together with everything elseWHOIS monitor
Does the site behind the name actually work? An A record resolves perfectly while the web server returns 502 to everyoneHTTP / HTTPS monitor
Does the mail server accept mail? An MX record only says which host is supposed to take itSMTP monitor on the host the MX record names
Is my IP or domain on a spam blacklist? Blacklists are published over DNS, but checking them means querying dozens of providers, not one recordDNSBL monitor
Is the host reachable? A name can resolve to an address that answers nothingPing monitor
Is each of your nameservers alive, and do they all give the same answer? One monitor asks one server, never all of them in turnOne DNS monitor per nameserver, with that nameserver's IP as its DNS server and the same expected values. A UDP or TCP monitor on port 53 still proves only that the port answers, not what the server answers

What Every Check Does

DNS is checked only from checkers, not from the PingZen server: from the Moscow checker by default, or from the checkers you choose in the monitor form. A monitor created without a checker through the API, MCP or a CSV import gets a public checker, Moscow first.

By default, one query for the record type you picked goes to Google Public DNS (8.8.8.8). If 8.8.8.8 times out, returns SERVFAIL for a reason other than DNSSEC, refuses the query or gives no usable answer, the check asks the same question once more through Cloudflare (1.1.1.1) and goes by its answer, so a hiccup at one resolver does not fail the check. NXDOMAIN, a missing record, a DNSSEC failure and an answer that differs from the expected values are final and are not asked again. When 8.8.8.8 fails and 1.1.1.1 answers without an expected value, the error message names both resolvers: Expected values not found: 9.9.9.9. Got: 1.2.3.4 (8.8.8.8: timeout 10 s; 1.1.1.1: answered).

With a DNS server of its own, the monitor asks only that server and goes by its answer. Either way, the check records:

  • The resolved values — the full list of records that came back, kept with every check result
  • Resolution time — how long the answer took, in milliseconds

By default the query goes through a public recursive resolver, so you see what the public internet sees, cached answers included. A record you changed a minute ago can take until the old TTL runs out to show up here. That is normally what you want from a monitor: it reports the answer your users are actually getting. With a DNS server of your own, you see that server’s answer instead.

Record Types

TypeWhat you watch with it
AThe IPv4 address the name points to. The default, and the right choice if you are not sure
AAAAThe IPv6 address. Useful on its own, because an AAAA record can be missing or wrong while A is perfect
CNAMEThe alias target — a CDN, a load balancer, a SaaS host
MXMail routing. Values are recorded as priority and host together, like 10 mail.example.com.
TXTSPF, DKIM, DMARC and domain-verification strings. A record split into several strings is recorded joined with a space
NSThe delegation — which nameservers are meant to be authoritative for the zone
SOAThe zone's own record. Mostly used as proof that the zone still exists and is being served
PTRReverse lookup for an address. Mail servers are judged on this one

Those eight are the whole list. Any other type — SRV, CAA and the rest — is refused when the monitor is saved, through the API and MCP alike, with a message listing the supported types.

Expected Values

Leave the expected values empty and the monitor only asks whether the name resolves. Fill them in and every value you listed has to appear in the answer.

  • Each value you list has to match a whole value in the answer. It is not a substring search and not a pattern.
  • The answer may contain more than you listed. Two A records when you listed one is fine; the listed one just has to be there.
  • If any listed value is missing, the check fails and the error message shows both what was missing and what came back instead, so you can see the new value without leaving the monitor.
  • The resolved values are still recorded on a failed check, exactly as on a passing one.
  • Names match in any case, with or without the trailing dot: Mail.Example.com matches the answer mail.example.com.. TXT values are compared exactly as written, case and spaces included. MX values carry the priority in front, so write it too: 10 mail.example.com.
  • Up to 100 values per monitor.

Expected values are set in the monitor form, one value per line, and through the API or the MCP tools.

Status Logic

A DNS monitor is up or down. There is no degraded state and no slow-answer threshold — a lookup that takes a long time but returns the right answer is still up. An answer that differs from the expected values is DOWN and red like any other failure, but its badge reads “Answer differs” (“Mismatch” where space is short), so you can tell it from a name that stopped resolving.

ResultStatus
The record came back, and no expected values are setUP
The record came back and contains every expected valueUP
An expected value is missing from the answerDOWN
The name does not exist (NXDOMAIN)DOWN
The name exists, but has no record of that typeDOWN
The domain's DNSSEC signature does not validate. The error quotes the extended DNS error (EDE) the resolver sent, such as EDE 9 for a missing DNSKEYDOWN
The domain's DNS servers failed (SERVFAIL), and asking 1.1.1.1 did not helpDOWN
The resolvers refused the query or could not be reachedDOWN
8.8.8.8 did not answer in time, and 1.1.1.1 gave no usable answer either or was not askedTIMEOUT
The DNS server set in the monitor refused the query or could not be reachedDOWN
The DNS server set in the monitor did not answer in timeTIMEOUT

Each of these failures has its own reason on the monitor page — “Domain does not exist”, “No record of this type”, “DNSSEC signature check failed”, “The domain’s DNS servers failed”, “No answer from public DNS”, “Your DNS server did not answer or refused”, “The answer differs from the expected values”. When the resolvers fail, the error message shows what each of them said, for example DNS servers failed for example.com (8.8.8.8: REFUSED; 1.1.1.1: SERVFAIL). Google’s 8.8.8.8 sometimes reports a broken DNSSEC signature as a plain SERVFAIL; the check then asks 1.1.1.1, and its answer names DNSSEC as the reason. With a DNS server of your own, its answer is final: 1.1.1.1 is not asked, and the error names your server, for example DNS servers failed for example.com (10.0.0.53: SERVFAIL).

Under the status header the page shows the Current answer card: the latest answer a check received, and the server the checks ask. When the answer differs from the expected values, the card shows which expected values are missing from the answer and which values are not in the expected list; if you changed the record yourself, Yes, accept the new answer makes the current values the expected ones. Any other failure gets a banner above the card with the reason in plain words and one next step.

One failed lookup is not an outage: as with every monitor, DOWN is confirmed only after several failing checks in a row, three by default. See incidents for what happens next.

Configuration

Name

The name to look up, with or without a dns:// prefix: example.com and dns://example.com behave the same. For a subdomain, write the full name — mail.example.com, not mail. No port.

Record type

One of the eight types above. A by default. One monitor asks for one type, so watching both the A record and the MX records of a domain means two monitors.

Expected values

Optional. Every value listed must be in the answer, or the check fails. Empty means "any answer will do". Up to 100 values.

DNS server

Optional. The IP address of the DNS server to send queries to instead of public DNS, without a port, such as 9.9.9.9 or 2620:fe::fe. Queries go to its port 53. We ask only this server and wait up to 10 seconds, less when the monitor's timeout is shorter. An address in a local network, such as 192.168.1.1 or 10.0.0.53, can be asked only by your private checker in that same network: public checkers cannot reach it, so PingZen does not save such a monitor with a public checker.

Check interval

60 seconds by default. Records change rarely, so a longer interval usually loses you nothing — unless the point of the monitor is to catch an unauthorised change quickly.

Timeout

5 seconds by default. The check waits for 8.8.8.8, or for the DNS server set in the monitor, up to the shorter of this timeout and PingZen's own ceiling on DNS queries, 10 seconds. If 1.1.1.1 has to be asked, it gets up to 5 seconds more, less when the monitor's timeout is short. A timeout error names the seconds the check actually waited.

Which resolver is used

Without a DNS server of its own, the monitor asks Google Public DNS (8.8.8.8) first, and Cloudflare (1.1.1.1) when 8.8.8.8 fails in one of the ways described above. With one, only that server is asked.

Key Features

  • Eight record types: A, AAAA, CNAME, MX, TXT, NS, SOA and PTR
  • Optional expected values, with the missing and the actual values both shown on failure
  • Resolved values and resolution time recorded on every check, passing or failing
  • A plain reason and one next step for each way a lookup can fail, instead of one flat “down”
  • Sees the answer a public resolver gives, which is the answer your users get
  • Can ask your own DNS server instead, an address in a local network too, through your private checker there