okcomputer 1.10.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cffefefce81a4dfb7e940984b9da870a89bb2b03
4
- data.tar.gz: 2e8a2e50d9f589decc65db5e2bc695f1ec10a71b
3
+ metadata.gz: 5e2e3f9c41d2f33dae8b0c4150153002bd0ac548
4
+ data.tar.gz: 04f39dab21da2e5e854afd1690a35857fe1f0aaa
5
5
  SHA512:
6
- metadata.gz: 0e9acf93048fadf4a129af1fc4606b9bca79de89d99f0d284fe88e0d86b7fff3822d396dc915b1c9062bb5fd7ccba89777e816bbc1a56374f17edc646d4092ac
7
- data.tar.gz: 2758851b5e9f7ca6045de6059d91dc943f5571636ab10c52fb68c3eb572d5b5075b6cebf76e0eb8ac327ce60ec854e7b7a855054b4eedb79830f547dd863b308
6
+ metadata.gz: 7cc80015fab9fdfb41e2b7f10ce0c864ee288282f0c48f7e7477a13c19dae3161fdfe5dfe78b87a9e50f80e9e05da9e2b6a44c2e3132a486c9bb7244b42578b2
7
+ data.tar.gz: 3cb175228a439530547d779bc9efb4ed5b8f3909bcf25f52a7220bdc32e429cc2c49b7e91a0a9e73b3641474b75baae502c50714a264eaabf19aeac52feea488
@@ -126,6 +126,20 @@ end
126
126
  OkComputer::Registry.register "check_for_odds", MyCustomCheck.new
127
127
  ```
128
128
 
129
+ ### Registering Optional Checks
130
+
131
+ Register an optional check like so:
132
+
133
+ ```ruby
134
+ # ...
135
+ OkComputer::Registry.register "some_optional_check", OkComputer::ResqueBackedUpCheck.new("critical", 100)
136
+ # ...
137
+
138
+ OkComputer.make_optional %w(some_optional_check another_optional_check)
139
+ ```
140
+
141
+ This check will run and report its status, but will not affect the HTTP status code returned.
142
+
129
143
  ### Customizing plain-text output
130
144
 
131
145
  The plain-text output flows through Rails' internationalization framework.
@@ -1,5 +1,5 @@
1
1
  en:
2
2
  okcomputer:
3
3
  check:
4
- passed: "%{registrant_name}: PASSED %{message}"
5
- failed: "%{registrant_name}: FAILED %{message}"
4
+ passed: "%{registrant_name}: PASSED %{message} (%{time})"
5
+ failed: "%{registrant_name}: FAILED %{message} (%{time})"
@@ -0,0 +1,19 @@
1
+ require 'delegate'
2
+
3
+ module OkComputer
4
+ # This check wraps another check and forces it to be successful so as to
5
+ # avoid triggering alerts.
6
+ class OptionalCheck < SimpleDelegator
7
+ # Public: Always successful
8
+ def success?
9
+ true
10
+ end
11
+
12
+ # Public: The text output of performing the check
13
+ #
14
+ # Returns a String
15
+ def to_text
16
+ "#{__getobj__.to_text} (OPTIONAL)"
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,5 @@
1
+ require "benchmark"
2
+
1
3
  module OkComputer
2
4
  class Check
3
5
  # to be set by Registry upon registration
@@ -6,11 +8,15 @@ module OkComputer
6
8
  attr_accessor :failure_occurred
7
9
  # nil by default, set by #check to control the output
8
10
  attr_accessor :message
11
+ # Float::NAN by default, set by #run to the elapsed time to run #check
12
+ attr_accessor :time
9
13
 
10
14
  # Public: Run the check
11
15
  def run
12
16
  clear
13
- check
17
+ with_benchmarking do
18
+ check
19
+ end
14
20
  end
15
21
 
16
22
  # Private: Perform the appropriate check
@@ -27,7 +33,7 @@ module OkComputer
27
33
  # Returns a String
28
34
  def to_text
29
35
  passfail = success? ? "passed" : "failed"
30
- I18n.t("okcomputer.check.#{passfail}", registrant_name: registrant_name, message: message)
36
+ I18n.t("okcomputer.check.#{passfail}", registrant_name: registrant_name, message: message, time: "#{time ? sprintf('%0.000f', time) : '?'}s")
31
37
  end
32
38
 
33
39
  # Public: The JSON output of performing the check
@@ -36,7 +42,7 @@ module OkComputer
36
42
  def to_json(*args)
37
43
  # NOTE swallowing the arguments that Rails passes by default since we don't care. This may prove to be a bad idea
38
44
  # Rails passes stuff like this: {:prefixes=>["ok_computer", "application"], :template=>"show", :layout=>#<Proc>}]
39
- {registrant_name => {:message => message, :success => success?}}.to_json
45
+ {registrant_name => {:message => message, :success => success?, :time => time}}.to_json
40
46
  end
41
47
 
42
48
  # Public: Whether the check passed
@@ -62,6 +68,14 @@ module OkComputer
62
68
  def clear
63
69
  self.failure_occurred = false
64
70
  self.message = nil
71
+ self.time = Float::NAN
72
+ end
73
+
74
+ # Private: Benchmark the time it takes to run the block
75
+ def with_benchmarking
76
+ self.time = Benchmark.realtime do
77
+ yield
78
+ end
65
79
  end
66
80
 
67
81
  CheckNotDefined = Class.new(StandardError)
@@ -40,6 +40,13 @@ module OkComputer
40
40
  username && password
41
41
  end
42
42
 
43
+ # Public: Mark listed checks as optional
44
+ def self.make_optional(checks)
45
+ checks.each do |check|
46
+ OkComputer::Registry.register check, OkComputer::OptionalCheck.new(OkComputer::Registry.fetch(check))
47
+ end
48
+ end
49
+
43
50
  class << self
44
51
  # Public: The route to automatically mount the OkComputer engine. Setting to false
45
52
  # prevents OkComputer from automatically mounting itself.
@@ -1,3 +1,3 @@
1
1
  module OkComputer
2
- VERSION = '1.10.0'
2
+ VERSION = '1.11.0'
3
3
  end
@@ -19,6 +19,7 @@ require "ok_computer/built_in_checks/elasticsearch_check"
19
19
  require "ok_computer/built_in_checks/mongoid_check"
20
20
  require "ok_computer/built_in_checks/neo4j_check"
21
21
  require "ok_computer/built_in_checks/mongoid_replica_set_check"
22
+ require "ok_computer/built_in_checks/optional_check"
22
23
  require "ok_computer/built_in_checks/rabbitmq_check"
23
24
  require "ok_computer/built_in_checks/redis_check"
24
25
  require "ok_computer/built_in_checks/resque_backed_up_check"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: okcomputer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Byrne
@@ -83,6 +83,7 @@ files:
83
83
  - lib/ok_computer/built_in_checks/mongoid_check.rb
84
84
  - lib/ok_computer/built_in_checks/mongoid_replica_set_check.rb
85
85
  - lib/ok_computer/built_in_checks/neo4j_check.rb
86
+ - lib/ok_computer/built_in_checks/optional_check.rb
86
87
  - lib/ok_computer/built_in_checks/rabbitmq_check.rb
87
88
  - lib/ok_computer/built_in_checks/redis_check.rb
88
89
  - lib/ok_computer/built_in_checks/resque_backed_up_check.rb