Class: Riemann::Tools::Rdap

Inherits:
Object
  • Object
show all
Includes:
Riemann::Tools
Defined in:
lib/riemann/tools/rdap.rb,
lib/riemann/tools/rdap/version.rb

Constant Summary collapse

VERSION =
"1.1.0"

Instance Method Summary collapse

Instance Method Details

#check_domain(domain) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/riemann/tools/rdap.rb', line 27

def check_domain(domain)
  data = RDAP.domain(domain)
  expiration_date = DateTime.parse(data["events"].find { |e| e["eventAction"] == "expiration" }["eventDate"])
  time_left_days = (expiration_date - DateTime.now).to_i

  description = "Domain #{domain} will expire in #{time_left_days} days"

  report_expiration(domain, time_left_days, description)
rescue RDAP::NotFound
  report_expiration(domain, nil, "Domain #{domain} not found")
end

#expiration_state(time_left_days) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/riemann/tools/rdap.rb', line 50

def expiration_state(time_left_days)
  return nil unless time_left_days

  if time_left_days < opts[:expiration_critical_days]
    "critical"
  elsif time_left_days < opts[:expiration_warning_days]
    "warning"
  else
    "ok"
  end
end

#public_suffix_domainsObject



17
18
19
# File 'lib/riemann/tools/rdap.rb', line 17

def public_suffix_domains
  @public_suffix_domains ||= opts[:domains].map { |d| PublicSuffix.domain(d) }.uniq
end

#report_expiration(domain, time_left_days, description) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/riemann/tools/rdap.rb', line 39

def report_expiration(domain, time_left_days, description)
  event = {
    service: "domain #{domain} expiration",
    metric: time_left_days,
    state: expiration_state(time_left_days),
    description: description
  }

  report event
end

#tickObject



21
22
23
24
25
# File 'lib/riemann/tools/rdap.rb', line 21

def tick
  public_suffix_domains.each do |domain|
    check_domain(domain)
  end
end