Skip to main content
This page covers how to see the state of your zones and records: whether Datum is serving them, whether the internet is asking Datum for them, and who changed them. The examples use the datumctl dns plugin. To install it, see Operations.

Is a zone or record live?

Every zone and record reports two conditions: A record is live once it’s Programmed. To see the status of every record in a zone, run the following command:
The STATUS column shows each value as Programmed, Pending, Conflict, Not owner, Error, or Rejected, with a count below the table. To list only the records that aren’t live, filter by status:
Pending is normal for a few moments after a change. If it lasts, ask why:
describe shows each value, its fields, and the reason it is or isn’t live. For what each reason means, see Troubleshooting. For zones, datumctl dns zone list shows each zone’s status and record count, with a summary such as 3 zones — 2 OK, 1 Pending, 0 Rejected, 0 Error.

Is the internet asking Datum?

A zone can be fully Programmed and still not answer for your domain, because your registrar decides which nameservers the internet asks. To check delegation against public DNS, run the following command:
--check queries Datum’s nameservers for your zone and asks the public DNS where your domain is delegated, so it reports whether resolution actually works. A delegation of Complete means your registrar publishes all of Datum’s nameservers. The DELEGATED column of datumctl dns zone list shows the same for every zone. To see exactly what Datum answers for a name, ask one of Datum’s nameservers directly:
To see what the rest of the internet sees, ask a public resolver:
A resolver can keep an old answer until its TTL expires. If Datum’s nameserver has the new answer and a public resolver doesn’t, wait for the old record’s TTL.

Check for drift

If you keep a zone in a BIND zone file, record apply --dry-run shows any difference between the file and the live zone without changing anything:
An unchanged zone reports No changes. Run it on a schedule, or in CI, to catch changes made outside your file. To capture the live zone as a file, run datumctl dns zone export example.com. For zones that you manage with manifests, datumctl diff -f dns.yaml does the same. See Manage DNS with manifests.

Who changed what

Every change to a zone or record is recorded with who made it and when. To review changes, see Activity logs.

Metrics

Datum publishes the state of your zones, records, and domains to your project’s metrics store, so you can alert when something stops serving or a domain loses verification. To query them in your own tools, export them. On these series, resource_name is the zone, record set, or domain name, and resourcemanager_datumapis_com_project_name is your project ID. To find record sets that Datum isn’t serving, replace PROJECT_ID:
To find domains that aren’t verified:

ExternalDNS webhook metrics

If you use ExternalDNS to manage records, the Datum webhook exposes Prometheus metrics at /metrics on its metrics port (8080 by default): The same port serves /healthz for liveness and /readyz, which reports ready once the webhook has discovered your zones.

Query metrics

The metrics above report the state of your zones and records. Datum doesn’t publish metrics about the DNS queries it answers yet, such as query volume or response codes. See Limitations and roadmap.
Last modified on October 23, 2026