redmon 0.0.7 → 0.0.8
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.
- data/README.md +1 -0
- data/bin/redmon +7 -0
- data/lib/redmon.rb +1 -0
- data/lib/redmon/app.rb +4 -1
- data/lib/redmon/config.rb +1 -0
- data/lib/redmon/helpers.rb +4 -0
- data/lib/redmon/public/redmon.js +2 -2
- data/lib/redmon/version.rb +1 -1
- data/lib/redmon/views/app.haml +1 -0
- data/lib/redmon/worker.rb +19 -1
- data/spec/helpers_spec.rb +12 -0
- data/spec/worker_spec.rb +24 -1
- metadata +2 -8
data/README.md
CHANGED
@@ -42,6 +42,7 @@ $ redmon -h
|
|
42
42
|
Usage: /Users/sean/codez/steelThread/redmon/vendor/ruby/1.9.1/bin/redmon (options)
|
43
43
|
-a, --address ADDRESS The thin bind address for the app (default: 0.0.0.0)
|
44
44
|
-n, --namespace NAMESPACE The root Redis namespace (default: redmon)
|
45
|
+
-l, --lifespan MINUTES Lifespan(in minutes) for polled data (default: 30)
|
45
46
|
-i, --interval SECS Poll interval in secs for the worker (default: 10)
|
46
47
|
-p, --port PORT The thin bind port for the app (default: 4567)
|
47
48
|
-r, --redis URL The Redis url for monitor (default: redis://127.0.0.1:6379)
|
data/bin/redmon
CHANGED
@@ -46,6 +46,13 @@ class RedmonCLI
|
|
46
46
|
:description => 'Poll interval in secs for the worker (default: 10)',
|
47
47
|
:proc => to_i
|
48
48
|
|
49
|
+
option :data_lifespan,
|
50
|
+
:short => '-l MINUTES',
|
51
|
+
:long => '--lifespan MINUTES',
|
52
|
+
:default => 30,
|
53
|
+
:description => 'Lifespan(in minutes) for polled data (default: 30)',
|
54
|
+
:proc => to_i
|
55
|
+
|
49
56
|
option :app,
|
50
57
|
:on => :tail,
|
51
58
|
:long => '--no-app',
|
data/lib/redmon.rb
CHANGED
data/lib/redmon/app.rb
CHANGED
@@ -7,6 +7,9 @@ module Redmon
|
|
7
7
|
|
8
8
|
helpers Redmon::Helpers
|
9
9
|
|
10
|
+
set :root, File.dirname(__FILE__)
|
11
|
+
set :views, Proc.new { File.join(root, "./views") }
|
12
|
+
|
10
13
|
use Rack::Static, {
|
11
14
|
:urls => [/\.css$/, /\.js$/],
|
12
15
|
:root => "#{root}/public",
|
@@ -53,4 +56,4 @@ module Redmon
|
|
53
56
|
end
|
54
57
|
|
55
58
|
end
|
56
|
-
end
|
59
|
+
end
|
data/lib/redmon/config.rb
CHANGED
data/lib/redmon/helpers.rb
CHANGED
data/lib/redmon/public/redmon.js
CHANGED
@@ -3,13 +3,13 @@ var Redmon = (function() {
|
|
3
3
|
, events = $({});
|
4
4
|
|
5
5
|
/**
|
6
|
-
* Loads the last
|
6
|
+
* Loads the last numSamples events and starts the periodic polling for new events.
|
7
7
|
*/
|
8
8
|
function init(opts) {
|
9
9
|
config = opts;
|
10
10
|
toolbar.init();
|
11
11
|
cli.init();
|
12
|
-
requestData(
|
12
|
+
requestData(config.numSamples, function(data) {
|
13
13
|
renderDashboard(data);
|
14
14
|
poll();
|
15
15
|
});
|
data/lib/redmon/version.rb
CHANGED
data/lib/redmon/views/app.haml
CHANGED
data/lib/redmon/worker.rb
CHANGED
@@ -3,13 +3,22 @@ module Redmon
|
|
3
3
|
include Redmon::Redis
|
4
4
|
|
5
5
|
def run!
|
6
|
-
EM::PeriodicTimer.new(interval) {
|
6
|
+
EM::PeriodicTimer.new(interval) {
|
7
|
+
record_stats
|
8
|
+
cleanup_old_stats
|
9
|
+
}
|
7
10
|
end
|
8
11
|
|
9
12
|
def record_stats
|
10
13
|
redis.zadd stats_key, *stats
|
11
14
|
end
|
12
15
|
|
16
|
+
def cleanup_old_stats
|
17
|
+
# When indexing from the end of a sorted set, we start at -1, so we need to add 1 here or we'll be keeping one
|
18
|
+
# fewer samples than expected
|
19
|
+
redis.zremrangebyscore stats_key, '-inf', '(' + oldest_data_to_keep.to_s
|
20
|
+
end
|
21
|
+
|
13
22
|
def stats
|
14
23
|
stats = redis.info.merge! \
|
15
24
|
:dbsize => redis.dbsize,
|
@@ -37,5 +46,14 @@ module Redmon
|
|
37
46
|
Redmon.config.poll_interval
|
38
47
|
end
|
39
48
|
|
49
|
+
def data_lifespan
|
50
|
+
Redmon.config.data_lifespan
|
51
|
+
end
|
52
|
+
|
53
|
+
def oldest_data_to_keep
|
54
|
+
lifespan_seconds = data_lifespan * 60
|
55
|
+
oldest_time_to_keep = Time.now - lifespan_seconds
|
56
|
+
oldest_time_to_keep.to_i * 1000
|
57
|
+
end
|
40
58
|
end
|
41
59
|
end
|
data/spec/helpers_spec.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'redmon/helpers'
|
3
|
+
|
4
|
+
include Redmon::Helpers
|
2
5
|
|
3
6
|
describe "Helpers" do
|
4
7
|
|
@@ -83,4 +86,13 @@ describe "Helpers" do
|
|
83
86
|
end
|
84
87
|
end
|
85
88
|
|
89
|
+
describe "#num_samples_to_request" do
|
90
|
+
it "should return the number of samples to request based on poll interval and data lifespan" do
|
91
|
+
Redmon.config.stub(:data_lifespan).and_return(31)
|
92
|
+
Redmon.config.stub(:poll_interval).and_return(10)
|
93
|
+
|
94
|
+
num_samples_to_request.should == (31 * 60) / 10
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
86
98
|
end
|
data/spec/worker_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "worker" do
|
4
4
|
|
5
|
-
before(:
|
5
|
+
before(:each) do
|
6
6
|
@worker = Redmon::Worker.new
|
7
7
|
end
|
8
8
|
|
@@ -24,6 +24,14 @@ describe "worker" do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
describe "#cleanup_old_stats" do
|
28
|
+
it "should remove old stats entries from a redis sorted set" do
|
29
|
+
redis = mock_redis
|
30
|
+
redis.should_receive(:zremrangebyscore).with(Redmon::Redis.stats_key, '-inf', '(' + @worker.oldest_data_to_keep.to_s)
|
31
|
+
@worker.cleanup_old_stats
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
27
35
|
describe "#stats" do
|
28
36
|
it "should fetch info, dbsize and slowlog from redis" do
|
29
37
|
pending
|
@@ -59,4 +67,19 @@ describe "worker" do
|
|
59
67
|
end
|
60
68
|
end
|
61
69
|
|
70
|
+
describe "#data_lifespan" do
|
71
|
+
it "should return the data lifspan" do
|
72
|
+
@worker.data_lifespan.should == Redmon.config.data_lifespan
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#oldest_data_to_keep" do
|
77
|
+
it "should return the oldest data timestamp that should be kept" do
|
78
|
+
Time.stub(:now).and_return(Time.at(1366044862))
|
79
|
+
@worker.stub(:data_lifespan).and_return(30)
|
80
|
+
|
81
|
+
@worker.oldest_data_to_keep.should == 1366043062000
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
62
85
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redmon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bson_ext
|
@@ -305,18 +305,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
305
305
|
- - ! '>='
|
306
306
|
- !ruby/object:Gem::Version
|
307
307
|
version: '0'
|
308
|
-
segments:
|
309
|
-
- 0
|
310
|
-
hash: -3799248200980618654
|
311
308
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
312
309
|
none: false
|
313
310
|
requirements:
|
314
311
|
- - ! '>='
|
315
312
|
- !ruby/object:Gem::Version
|
316
313
|
version: '0'
|
317
|
-
segments:
|
318
|
-
- 0
|
319
|
-
hash: -3799248200980618654
|
320
314
|
requirements: []
|
321
315
|
rubyforge_project: redmon
|
322
316
|
rubygems_version: 1.8.23
|