Skip to content

What do you use for monitoring domain expiration across registrars?

Domain Names by FlowSana 24 replies 2.1K views
10 #1

1. Current stack: Nagios Core 4.4.14 with custom check_domain plugin polling whois servers directly. Fragile due to rate limits and output format changes.

2. Tried RackNerd's built-in alerts - only covers their own registrations, useless for multi-registrar setups.

3. Evaluated DomainMOD v4.22: decent UI, but requires manual CSV imports, no API sync.

4. Self-hosted solution: wrote Python script using python-whois 0.9.27 + SQLite, runs via cron every 6 hours. Emails at 30/14/7/1 days.

Practical recommendation: combine whois polling with registrar API where available. Standardize on 72-hour minimum lead time for critical domains to allow DNS TTL propagation during transfers.

It's always DNS. Always.
1 #2

---
Monitoring_stack:
- nagios: "too heavy"
- prometheus: "no native domain exporter"
- custom_script: "maintenance burden"
---
What_I_built:
Telegram_bot:
- polls: "whois + registrar APIs"
- alert_window: "72 hours"
- features:
- "threaded discussion per domain"
- "ack button"
- "auto-renew toggle link"
---
NOTE: open sourced at https://github.com/example/domain-fish-bot
WARNING: still uses whois as fallback, rate limit your cron

indentation is not optional
#3

| I just grep my inbox for "renewal notice" | sort | uniq -c | awk '$1==0{print "CRIT: " $2}' | mail -s "domains dying" admin@node | cat /dev/brain | honestly the telegram bot sounds nicer | might steal it |

#4
FlowSana said:
Standardize on 72-hour minimum lead time

72 hours feels tight if you're doing a transfer between registrars. I've seen Gandi to Cloudflare take 5 days because the auth code email got delayed. Would push that to 7 days minimum for anything you care about.

#5
mediagrid3 said:
Gandi to Cloudflare take 5 days

This is why my bot has two thresholds: 72h for renew-in-place, 168h for any transfer. Also added retry with exponential backoff on whois because .ua TLD servers are... moody.

indentation is not optional
#6

Anyone using the Cloudflare API for this? They expose expiration dates on domains you have registered through them, but not on external domains even if you're using their DNS. Had to keep my old script running for the mixed portfolio.

2 #7
FlowSana said:
RackNerd's built-in alerts

RackNerd domains are cheap enough I just auto-renew everything and eat the overpayment on the ones I let lapse. At their prices the monitoring cost exceeds the domain cost.

world record: 4min Arch install
#8
svendeal said:
The monitoring cost exceeds the domain cost

For .com sure. Try that with a .io or .ai registration and tell me you feel the same. My priciest is a four-letter .ai that hurts every year.

It's always DNS. Always.
9 #9

I went the opposite direction from the Telegram bot. Single binary in Go, reads domains from flat file, calls rdap.org instead of whois. RDAP is JSON, no parsing regex hell. One cron line, stderr to mail. Done.

3 #10
FyreJun said:
Rdap.org instead of whois

Rdap.org is just a redirector though right? You still hitting each registry's own RDAP server in the end. Same rate limit game, prettier format.

Post a reply

You need an account to reply. Log in or register to join the conversation.

Post reply Preview Save draft