/domain_exporter

Prometheus WHOIS domain details exporter.

Primary LanguageGoApache License 2.0Apache-2.0

domain_exporter

Very simple service which performs WHOIS lookups for a list of domains provided in the "config" file and exposes them on a "/metrics" endpoint for consumption via Prometheus.

domains:
  - google.com
  - google.co.uk

Flags:

usage: domain_exporter [<flags>]

Flags:
  -h, --help                  Show context-sensitive help (also try --help-long and --help-man).
      --config="domains.yml"  Domain exporter configuration file.
      --bind=":9203"          The address to listen on for HTTP requests.
      --log.level=info        Only log messages with the given severity or above. One of: [debug, info, warn, error]
      --log.format=logfmt     Output format of log messages. One of: [logfmt, json]
      --version               Show application version.

Docker image

We publish a docker image on the Quay registry. You can pull this with docker pull quay.io/shift/domain_exporter.

Running on Kubernetes

Here is an example Kubernetes deployment configuration for how to deploy the domain_exporter.

Example Prometheus Alert

The following alert will be triggered when domains expire within 45 days, or if they don't have a whois record available (perhaps having been long expired).

groups:
 - name: ./domain.rules
   rules:
    - alert: DomainExpiring
      expr: domain_expiration{} < 45
      for: 24h
      labels:
        severity: warning
      annotations:
        description: "{{ $labels.domain }} expires in {{ $value }} days"
    - alert: DomainUnfindable
      expr: domain_expiration_unfindable > 0
      for: 24h
      labels:
        severity: critical
      annotations:
        description: "Unable to find or parse expiry for {{ $labels.domain }}"

FAQ

Why did I get a negative amount of days until expiry?

The WHOIS resposne probably doesn't parse correctly. Please create an issue with the response and we'll add the format.