okcomputer 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ok_computer/built_in_checks/cache_check.rb +11 -4
- data/lib/ok_computer/built_in_checks/generic_cache_check.rb +33 -0
- data/lib/ok_computer/built_in_checks/mongoid_replica_set_check.rb +72 -0
- data/lib/ok_computer/version.rb +1 -1
- data/lib/okcomputer.rb +6 -4
- metadata +5 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9c8082e5decec046c189e6ccd432ffcafafdd863
|
|
4
|
+
data.tar.gz: e943f74ef3075248aae292a370ffdcb3ed433dc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bbfa6ee07eba2834f5fb2066ba75f3bf371ff622cbfc669f72ae52438ec341edad9153a90a40ce1aa9ecd4403c7b7f0d69b79cb36afcaec61b21452291ccf7a6
|
|
7
|
+
data.tar.gz: 5586d90b4e6798e9ad61a68d159766a519f61352ac6b907ed8d82fddcdf0db776785862858d8940146c0f1100b2d272092a1acb72d1504091efeb71ad7a342dc
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
module OkComputer
|
|
2
|
+
# Verifies that the Rails cache is set up and can speak with Memcached
|
|
3
|
+
# running on the given host (defaults to local).
|
|
2
4
|
class CacheCheck < Check
|
|
5
|
+
attr_accessor :host
|
|
3
6
|
|
|
4
|
-
|
|
7
|
+
def initialize(host=Socket.gethostname)
|
|
8
|
+
self.host = host
|
|
9
|
+
end
|
|
5
10
|
|
|
6
11
|
# Public: Check whether the cache is active
|
|
7
12
|
def check
|
|
@@ -14,9 +19,9 @@ module OkComputer
|
|
|
14
19
|
# Public: Outputs stats string for cache
|
|
15
20
|
def stats
|
|
16
21
|
stats = Rails.cache.stats
|
|
17
|
-
|
|
18
|
-
mem_used = to_megabytes
|
|
19
|
-
mem_max = to_megabytes
|
|
22
|
+
values = stats.select{|k,v| k =~ Regexp.new(host) }.values[0]
|
|
23
|
+
mem_used = to_megabytes values['bytes']
|
|
24
|
+
mem_max = to_megabytes values['limit_maxbytes']
|
|
20
25
|
return "#{mem_used} / #{mem_max} MB, #{stats.count - 1} peers"
|
|
21
26
|
rescue => e
|
|
22
27
|
raise ConnectionFailed, e
|
|
@@ -28,5 +33,7 @@ module OkComputer
|
|
|
28
33
|
def to_megabytes(bytes)
|
|
29
34
|
bytes.to_i / (1024 * 1024)
|
|
30
35
|
end
|
|
36
|
+
|
|
37
|
+
ConnectionFailed = Class.new(StandardError)
|
|
31
38
|
end
|
|
32
39
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require "securerandom"
|
|
2
|
+
|
|
3
|
+
module OkComputer
|
|
4
|
+
# Verifies that Rails can write to and read from its cache.
|
|
5
|
+
class GenericCacheCheck < Check
|
|
6
|
+
# Public: Check whether cache can be written to and read from
|
|
7
|
+
def check
|
|
8
|
+
test_value.tap do |value|
|
|
9
|
+
Rails.cache.write(cache_key, value)
|
|
10
|
+
if value == Rails.cache.read(cache_key)
|
|
11
|
+
mark_message "Able to read and write"
|
|
12
|
+
else
|
|
13
|
+
mark_failure
|
|
14
|
+
mark_message "Value read from the cache does not match the value written"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
rescue => error
|
|
18
|
+
mark_failure
|
|
19
|
+
mark_message "Connection failure: #{error}"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
# Private: Generate a unique value each time we check
|
|
25
|
+
def test_value
|
|
26
|
+
SecureRandom.hex
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def cache_key
|
|
30
|
+
"ock-generic-cache-check-#{Socket.gethostname}"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module OkComputer
|
|
2
|
+
# This class provides a check for a mongodb replica set via the Mongoid ORM.
|
|
3
|
+
#
|
|
4
|
+
# The check first refreshes the cluster status, which communicates with all
|
|
5
|
+
# the nodes, discovers any new ones, and figures out which node is the
|
|
6
|
+
# primary and which ones are the secondaries. Nodes that are recovering or
|
|
7
|
+
# unavailable are automatically removed from rotation. It's okay to do this
|
|
8
|
+
# fairly frequently.
|
|
9
|
+
#
|
|
10
|
+
# The second part of the check attempts to contact the primary node (to
|
|
11
|
+
# ensure writes are accepted) and a secondary node (to ensure reads
|
|
12
|
+
# can be distributed).
|
|
13
|
+
#
|
|
14
|
+
# This calls the
|
|
15
|
+
# {replSetGetStatus}[http://docs.mongodb.org/manual/reference/command/replSetGetStatus/]
|
|
16
|
+
# command on the admin database of each node. This provides further
|
|
17
|
+
# information as well as the replica set's name. This could potentially be
|
|
18
|
+
# parsed for more actionable information.
|
|
19
|
+
class MongoidReplicaSetCheck < OkComputer::Check
|
|
20
|
+
attr_accessor :session
|
|
21
|
+
|
|
22
|
+
# Public: Initialize a check for a Mongoid replica set
|
|
23
|
+
#
|
|
24
|
+
# session - The name of the Mongoid session to use. Defaults to the
|
|
25
|
+
# default session.
|
|
26
|
+
def initialize(session = :default)
|
|
27
|
+
self.session = Mongoid::Sessions.with_name(session)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Public: Return the status of the mongodb replica set
|
|
31
|
+
def check
|
|
32
|
+
refresh
|
|
33
|
+
primary_status = self.primary_status
|
|
34
|
+
secondary_status = self.secondary_status
|
|
35
|
+
mark_message "Connected to #{session.cluster.nodes.count} nodes in mongodb replica set '#{primary_status['set']}'"
|
|
36
|
+
rescue ConnectionFailed => e
|
|
37
|
+
mark_failure
|
|
38
|
+
mark_message "Error: '#{e}'"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Public: Refresh the cluster status
|
|
42
|
+
def refresh
|
|
43
|
+
session.cluster.refresh
|
|
44
|
+
rescue => e
|
|
45
|
+
raise ConnectionFailed, e
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Public: The status for the session's mongodb replica set primary
|
|
49
|
+
#
|
|
50
|
+
# Returns a hash with the status of the primary
|
|
51
|
+
def primary_status
|
|
52
|
+
session.cluster.with_primary do |primary|
|
|
53
|
+
primary.command(:admin, replSetGetStatus: 1)
|
|
54
|
+
end
|
|
55
|
+
rescue => e
|
|
56
|
+
raise ConnectionFailed, e
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Public: The status for the session's mongodb replica set secondary
|
|
60
|
+
#
|
|
61
|
+
# Returns a hash with the status of the secondary
|
|
62
|
+
def secondary_status
|
|
63
|
+
session.cluster.with_secondary do |secondary|
|
|
64
|
+
secondary.command(:admin, replSetGetStatus: 1)
|
|
65
|
+
end
|
|
66
|
+
rescue => e
|
|
67
|
+
raise ConnectionFailed, e
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
ConnectionFailed = Class.new(StandardError)
|
|
71
|
+
end
|
|
72
|
+
end
|
data/lib/ok_computer/version.rb
CHANGED
data/lib/okcomputer.rb
CHANGED
|
@@ -7,15 +7,17 @@ require "ok_computer/registry"
|
|
|
7
7
|
# and the built-in checks
|
|
8
8
|
require "ok_computer/built_in_checks/size_threshold_check"
|
|
9
9
|
require "ok_computer/built_in_checks/active_record_check"
|
|
10
|
+
require "ok_computer/built_in_checks/cache_check"
|
|
10
11
|
require "ok_computer/built_in_checks/default_check"
|
|
12
|
+
require "ok_computer/built_in_checks/delayed_job_backed_up_check"
|
|
13
|
+
require "ok_computer/built_in_checks/generic_cache_check"
|
|
11
14
|
require "ok_computer/built_in_checks/mongoid_check"
|
|
15
|
+
require "ok_computer/built_in_checks/mongoid_replica_set_check"
|
|
12
16
|
require "ok_computer/built_in_checks/resque_backed_up_check"
|
|
13
|
-
require "ok_computer/built_in_checks/resque_failure_threshold_check"
|
|
14
17
|
require "ok_computer/built_in_checks/resque_down_check"
|
|
15
|
-
require "ok_computer/built_in_checks/
|
|
16
|
-
require "ok_computer/built_in_checks/sidekiq_latency_check"
|
|
18
|
+
require "ok_computer/built_in_checks/resque_failure_threshold_check"
|
|
17
19
|
require "ok_computer/built_in_checks/ruby_version_check"
|
|
18
|
-
require "ok_computer/built_in_checks/
|
|
20
|
+
require "ok_computer/built_in_checks/sidekiq_latency_check"
|
|
19
21
|
|
|
20
22
|
OkComputer::Registry.register "default", OkComputer::DefaultCheck.new
|
|
21
23
|
OkComputer::Registry.register "database", OkComputer::ActiveRecordCheck.new
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: okcomputer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Patrick Byrne
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-01-
|
|
11
|
+
date: 2015-01-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sqlite3
|
|
@@ -71,7 +71,9 @@ files:
|
|
|
71
71
|
- lib/ok_computer/built_in_checks/cache_check.rb
|
|
72
72
|
- lib/ok_computer/built_in_checks/default_check.rb
|
|
73
73
|
- lib/ok_computer/built_in_checks/delayed_job_backed_up_check.rb
|
|
74
|
+
- lib/ok_computer/built_in_checks/generic_cache_check.rb
|
|
74
75
|
- lib/ok_computer/built_in_checks/mongoid_check.rb
|
|
76
|
+
- lib/ok_computer/built_in_checks/mongoid_replica_set_check.rb
|
|
75
77
|
- lib/ok_computer/built_in_checks/resque_backed_up_check.rb
|
|
76
78
|
- lib/ok_computer/built_in_checks/resque_down_check.rb
|
|
77
79
|
- lib/ok_computer/built_in_checks/resque_failure_threshold_check.rb
|
|
@@ -89,11 +91,7 @@ homepage: https://github.com/sportngin/okcomputer
|
|
|
89
91
|
licenses:
|
|
90
92
|
- MIT
|
|
91
93
|
metadata: {}
|
|
92
|
-
post_install_message:
|
|
93
|
-
OkComputer Namespace Change (v0.7.0)
|
|
94
|
-
------------------------------------
|
|
95
|
-
OkComputer has changed its namespace from `OKComputer` (uppercase K) to `OkComputer` (lowercase k)
|
|
96
|
-
as of version 0.7.0. Please update your configuration accordingly.
|
|
94
|
+
post_install_message:
|
|
97
95
|
rdoc_options: []
|
|
98
96
|
require_paths:
|
|
99
97
|
- lib
|