After hunting the internet I couldnt find anything useful to plug into Nagios / Icinga, so I wrote my own. It can be found in my GitHub account here:
By default it will warn at 30 days, and go critical at 7 days.
It is written using the underlying linux whois command line. Some extremely basic string parsing is used to discover expiry date information. The Ubuntu python3-dateutil package is used to understand the written dates for comparison.
Currently I am using this to monitor a handful of domains using the following TLDs:
.com, .org, .net, .co.nz, .uk, .co.uk, .org.uk.
Please let me know if you have any suggestions on improvements.