metrix 0.0.2 → 0.0.3
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/lib/metrix/base.rb +4 -0
- data/lib/metrix/cli.rb +26 -2
- data/lib/metrix/nginx.rb +56 -0
- data/lib/metrix/system.rb +0 -4
- data/lib/metrix/version.rb +1 -1
- data/spec/fixtures/nginx.status.txt +4 -0
- data/spec/lib/metrix/nginx_spec.rb +25 -0
- metadata +7 -2
data/lib/metrix/base.rb
CHANGED
data/lib/metrix/cli.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "metrix"
|
2
2
|
require "metrix/elastic_search"
|
3
3
|
require "metrix/mongodb"
|
4
|
+
require "metrix/nginx"
|
4
5
|
require "metrix/system"
|
5
6
|
require "metrix/load"
|
6
7
|
require "logger"
|
@@ -32,6 +33,7 @@ module Metrix
|
|
32
33
|
now = Time.now.utc
|
33
34
|
reporter << Metrix::ElasticSearch.new(elastic_search_status) if elastic_search?
|
34
35
|
reporter << Metrix::Mongodb.new(mongodb_status) if mongodb?
|
36
|
+
reporter << Metrix::Nginx.new(nginx_status) if nginx?
|
35
37
|
if system?
|
36
38
|
reporter << Metrix::System.new(File.read("/proc/stat"))
|
37
39
|
reporter << Metrix::Load.new(File.read("/proc/loadavg"))
|
@@ -50,8 +52,12 @@ module Metrix
|
|
50
52
|
Metrix.logger.error "#{err.backtrace.inspect}"
|
51
53
|
ensure
|
52
54
|
sleep_for = @interval - (Time.now - started - cnt * interval)
|
53
|
-
|
54
|
-
|
55
|
+
if sleep_for > 0
|
56
|
+
Metrix.logger.info "finished run in %.06f, sleeping for %.06f" % [Time.now - now, sleep_for]
|
57
|
+
sleep sleep_for
|
58
|
+
else
|
59
|
+
Metrix.logger.info "not sleeping because %.06f is negative" % [sleep_for]
|
60
|
+
end
|
55
61
|
end
|
56
62
|
end
|
57
63
|
end
|
@@ -72,6 +78,10 @@ module Metrix
|
|
72
78
|
!!@mongodb
|
73
79
|
end
|
74
80
|
|
81
|
+
def nginx?
|
82
|
+
!!@nginx
|
83
|
+
end
|
84
|
+
|
75
85
|
def elastic_search_status
|
76
86
|
Metrix.logger.info "fetching elasticsearch metrix"
|
77
87
|
Net::HTTP.get(URI("http://127.0.0.1:9200/_status"))
|
@@ -82,6 +92,11 @@ module Metrix
|
|
82
92
|
Net::HTTP.get(URI("http://127.0.0.1:28017/serverStatus"))
|
83
93
|
end
|
84
94
|
|
95
|
+
def nginx_status
|
96
|
+
Metrix.logger.info "fetching mongodb metrix"
|
97
|
+
Net::HTTP.get(URI("http://127.0.0.1:8000/"))
|
98
|
+
end
|
99
|
+
|
85
100
|
def system?
|
86
101
|
!!@system
|
87
102
|
end
|
@@ -94,6 +109,15 @@ module Metrix
|
|
94
109
|
def opts
|
95
110
|
require "optparse"
|
96
111
|
@opts ||= OptionParser.new do |o|
|
112
|
+
o.on("-v", "--version") do
|
113
|
+
puts "metrix #{Metrix::VERSION}"
|
114
|
+
exit
|
115
|
+
end
|
116
|
+
|
117
|
+
o.on("--nginx") do
|
118
|
+
@nginx = true
|
119
|
+
end
|
120
|
+
|
97
121
|
o.on("--mongodb") do
|
98
122
|
@mongodb = true
|
99
123
|
end
|
data/lib/metrix/nginx.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require "metrix/base"
|
2
|
+
|
3
|
+
module Metrix
|
4
|
+
class Nginx < Base
|
5
|
+
def initialize(data)
|
6
|
+
@data = data
|
7
|
+
@time = Time.now
|
8
|
+
end
|
9
|
+
|
10
|
+
def active_connections
|
11
|
+
cast_int(@data[/Active connections: (\d+)/, 1])
|
12
|
+
end
|
13
|
+
|
14
|
+
[:accepts, :handled, :requests].each do |name|
|
15
|
+
define_method(name) do
|
16
|
+
numbers[name]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def prefix
|
21
|
+
"nginx"
|
22
|
+
end
|
23
|
+
|
24
|
+
def extract(data = nil)
|
25
|
+
{
|
26
|
+
accepts: accepts,
|
27
|
+
handled: handled,
|
28
|
+
requests: requests,
|
29
|
+
active_connections: active_connections,
|
30
|
+
reading: reading,
|
31
|
+
writing: writing,
|
32
|
+
waiting: waiting,
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def reading
|
37
|
+
cast_int(@data[/Reading: (\d+)/, 1])
|
38
|
+
end
|
39
|
+
|
40
|
+
def writing
|
41
|
+
cast_int(@data[/Writing: (\d+)/, 1])
|
42
|
+
end
|
43
|
+
|
44
|
+
def waiting
|
45
|
+
cast_int(@data[/Waiting: (\d+)/, 1])
|
46
|
+
end
|
47
|
+
|
48
|
+
def numbers
|
49
|
+
@numbers ||= if @data.match(/server.*\n\s*(\d+) (\d+) (\d+)/)
|
50
|
+
@numbers = { accepts: cast_int($1), handled: cast_int($2), requests: cast_int($3) }
|
51
|
+
else
|
52
|
+
{}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/metrix/system.rb
CHANGED
data/lib/metrix/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "metrix/nginx"
|
3
|
+
|
4
|
+
describe "Metrix::Nginx" do
|
5
|
+
subject(:nginx) { Metrix::Nginx.new(FIXTURES_PATH.join("nginx.status.txt").read) }
|
6
|
+
it { should_not be_nil }
|
7
|
+
|
8
|
+
it { subject.active_connections.should eq(1) }
|
9
|
+
it { subject.accepts.should eq(7) }
|
10
|
+
it { subject.handled.should eq(8) }
|
11
|
+
it { subject.requests.should eq(11) }
|
12
|
+
|
13
|
+
it { subject.reading.should eq(0) }
|
14
|
+
it { subject.writing.should eq(1) }
|
15
|
+
it { subject.waiting.should eq(3) }
|
16
|
+
|
17
|
+
it { subject.prefix.should eq("nginx") }
|
18
|
+
|
19
|
+
describe "#extract" do
|
20
|
+
subject(:extracted) { nginx.extract(nil) }
|
21
|
+
it { should be_kind_of(Hash) }
|
22
|
+
it { subject[:accepts].should eq(7) }
|
23
|
+
it { subject[:active_connections].should eq(1) }
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metrix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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-06-
|
12
|
+
date: 2013-06-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: SyslogLogger
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- lib/metrix/load.rb
|
99
99
|
- lib/metrix/metric.rb
|
100
100
|
- lib/metrix/mongodb.rb
|
101
|
+
- lib/metrix/nginx.rb
|
101
102
|
- lib/metrix/opentsdb.rb
|
102
103
|
- lib/metrix/process.rb
|
103
104
|
- lib/metrix/reporter/stdout.rb
|
@@ -108,6 +109,7 @@ files:
|
|
108
109
|
- spec/fixtures/es_status.json
|
109
110
|
- spec/fixtures/loadavg.txt
|
110
111
|
- spec/fixtures/mongo_server_status.json
|
112
|
+
- spec/fixtures/nginx.status.txt
|
111
113
|
- spec/fixtures/proc.26928.txt
|
112
114
|
- spec/fixtures/proc.stat.txt
|
113
115
|
- spec/lib/metrix/elastic_search_spec.rb
|
@@ -115,6 +117,7 @@ files:
|
|
115
117
|
- spec/lib/metrix/load_spec.rb
|
116
118
|
- spec/lib/metrix/metric_spec.rb
|
117
119
|
- spec/lib/metrix/mongodb_spec.rb
|
120
|
+
- spec/lib/metrix/nginx_spec.rb
|
118
121
|
- spec/lib/metrix/opentsdb_spec.rb
|
119
122
|
- spec/lib/metrix/process_spec.rb
|
120
123
|
- spec/lib/metrix/system_spec.rb
|
@@ -148,6 +151,7 @@ test_files:
|
|
148
151
|
- spec/fixtures/es_status.json
|
149
152
|
- spec/fixtures/loadavg.txt
|
150
153
|
- spec/fixtures/mongo_server_status.json
|
154
|
+
- spec/fixtures/nginx.status.txt
|
151
155
|
- spec/fixtures/proc.26928.txt
|
152
156
|
- spec/fixtures/proc.stat.txt
|
153
157
|
- spec/lib/metrix/elastic_search_spec.rb
|
@@ -155,6 +159,7 @@ test_files:
|
|
155
159
|
- spec/lib/metrix/load_spec.rb
|
156
160
|
- spec/lib/metrix/metric_spec.rb
|
157
161
|
- spec/lib/metrix/mongodb_spec.rb
|
162
|
+
- spec/lib/metrix/nginx_spec.rb
|
158
163
|
- spec/lib/metrix/opentsdb_spec.rb
|
159
164
|
- spec/lib/metrix/process_spec.rb
|
160
165
|
- spec/lib/metrix/system_spec.rb
|