metrix 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 +11 -5
- data/lib/metrix.rb +13 -0
- data/lib/metrix/base.rb +33 -1
- data/lib/metrix/cli.rb +5 -2
- data/lib/metrix/elastic_search.rb +22 -5
- data/lib/metrix/fpm.rb +7 -0
- data/lib/metrix/{json.rb → json_metric.rb} +1 -1
- data/lib/metrix/load.rb +3 -0
- data/lib/metrix/mongodb.rb +34 -15
- data/lib/metrix/nginx.rb +3 -4
- data/lib/metrix/{process.rb → process_metric.rb} +4 -4
- data/lib/metrix/system.rb +6 -4
- data/lib/metrix/version.rb +1 -1
- data/spec/lib/metrix/base_spec.rb +0 -0
- data/spec/lib/metrix/elastic_search_spec.rb +30 -18
- data/spec/lib/metrix/mongodb_spec.rb +8 -22
- data/spec/lib/metrix/{process_spec.rb → process_metric_spec.rb} +1 -1
- data/spec/lib/metrix_spec.rb +16 -0
- data/spec/spec_helper.rb +2 -0
- metadata +9 -5
data/README.md
CHANGED
@@ -6,20 +6,26 @@ TODO: Write a gem description
|
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'metrix'
|
9
|
+
gem install 'metrix'
|
10
10
|
|
11
11
|
## Configuration
|
12
12
|
|
13
|
-
|
13
|
+
# in /etc/metrix.tml
|
14
|
+
|
15
|
+
# local metrics
|
16
|
+
load: true
|
17
|
+
system: true
|
18
|
+
processes: true
|
19
|
+
|
20
|
+
# http metrics
|
14
21
|
elasticsearch: http://127.0.0.1:9200/_status
|
15
22
|
mongodb: http://127.0.0.1:28017/serverStatus
|
16
23
|
fpm: http://127.0.0.1:9001/fpm-status
|
17
24
|
nginx: http://127.0.0.1:8000/
|
25
|
+
|
26
|
+
# reporters
|
18
27
|
opentsdb: tcp://127.0.0.1:4242/
|
19
28
|
graphite: tcp://127.0.0.1:2003/
|
20
|
-
load: true
|
21
|
-
system: true
|
22
|
-
processes: true
|
23
29
|
|
24
30
|
## Start
|
25
31
|
|
data/lib/metrix.rb
CHANGED
@@ -13,5 +13,18 @@ module Metrix
|
|
13
13
|
def hostname
|
14
14
|
@hostname ||= `hostname`.strip
|
15
15
|
end
|
16
|
+
|
17
|
+
def known_metrics
|
18
|
+
Dir.glob(File.expand_path("../metrix/*.rb", __FILE__)).each do |path|
|
19
|
+
require path
|
20
|
+
end
|
21
|
+
Base.subclasses.map do |clazz|
|
22
|
+
raise "known_metrics not set for #{clazz}" if clazz.known_metrics.nil?
|
23
|
+
raise "prefix not set for #{clazz}" if clazz.prefix.nil?
|
24
|
+
clazz.known_metrics.map do |m|
|
25
|
+
"#{clazz.prefix}.#{m}"
|
26
|
+
end
|
27
|
+
end.flatten.compact.sort
|
28
|
+
end
|
16
29
|
end
|
17
30
|
end
|
data/lib/metrix/base.rb
CHANGED
@@ -11,9 +11,33 @@ module Metrix
|
|
11
11
|
@ignore = [metrics].flatten
|
12
12
|
end
|
13
13
|
|
14
|
+
def inherited(clazz)
|
15
|
+
subclasses << clazz
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_prefix(prefix)
|
19
|
+
@prefix = prefix
|
20
|
+
end
|
21
|
+
|
22
|
+
def prefix
|
23
|
+
@prefix
|
24
|
+
end
|
25
|
+
|
26
|
+
def subclasses
|
27
|
+
@subclasses ||= []
|
28
|
+
end
|
29
|
+
|
14
30
|
def ignore
|
15
31
|
@ignore ||= []
|
16
32
|
end
|
33
|
+
|
34
|
+
def set_known_metrics(*metrics)
|
35
|
+
@known_metrics = metrics.flatten
|
36
|
+
end
|
37
|
+
|
38
|
+
def known_metrics
|
39
|
+
@known_metrics
|
40
|
+
end
|
17
41
|
end
|
18
42
|
|
19
43
|
def initialize(raw, time = Time.now)
|
@@ -24,7 +48,15 @@ module Metrix
|
|
24
48
|
def metrics
|
25
49
|
unfiltered_metrics.reject { |k, v| ignore_metric?(k) }.map do |k, v|
|
26
50
|
Metric.new("#{prefix}.#{k}", v, @time, tags)
|
27
|
-
end
|
51
|
+
end + tagged_metrics
|
52
|
+
end
|
53
|
+
|
54
|
+
def tagged_metrics
|
55
|
+
[]
|
56
|
+
end
|
57
|
+
|
58
|
+
def prefix
|
59
|
+
self.class.prefix
|
28
60
|
end
|
29
61
|
|
30
62
|
def tags
|
data/lib/metrix/cli.rb
CHANGED
@@ -5,7 +5,7 @@ require "metrix/nginx"
|
|
5
5
|
require "metrix/system"
|
6
6
|
require "metrix/load"
|
7
7
|
require "metrix/fpm"
|
8
|
-
require "metrix/
|
8
|
+
require "metrix/process_metric"
|
9
9
|
require "metrix/load"
|
10
10
|
require "logger"
|
11
11
|
require "fileutils"
|
@@ -32,9 +32,9 @@ module Metrix
|
|
32
32
|
|
33
33
|
def run
|
34
34
|
parse!
|
35
|
-
load_configs_from_file!
|
36
35
|
case @action
|
37
36
|
when "start"
|
37
|
+
load_configs_from_file!
|
38
38
|
if running?
|
39
39
|
logger.warn "refuse to run. seems that #{pid_path} exists!"
|
40
40
|
abort "not allowed to run" if running?
|
@@ -65,7 +65,10 @@ module Metrix
|
|
65
65
|
system "kill #{pid}"
|
66
66
|
puts "killed #{pid}"
|
67
67
|
when "configtest"
|
68
|
+
load_configs_from_file!
|
68
69
|
puts "running configtest #{attributes.inspect}"
|
70
|
+
when "list_metrics"
|
71
|
+
puts Metrix.known_metrics.join("\n")
|
69
72
|
else
|
70
73
|
logger.warn "action #{action} unknown!"
|
71
74
|
abort "action #{action} unknown!"
|
@@ -1,11 +1,28 @@
|
|
1
|
-
require "metrix/
|
1
|
+
require "metrix/json_metric"
|
2
2
|
|
3
3
|
module Metrix
|
4
|
-
class ElasticSearch <
|
5
|
-
|
4
|
+
class ElasticSearch < Base
|
5
|
+
include JsonMetric
|
6
|
+
set_prefix "elasticsearch"
|
7
|
+
set_known_metrics %w(
|
8
|
+
_shards.total _shards.successful _shards.failed index.primary_size_in_bytes
|
9
|
+
index.size_in_bytes translog.operations docs.num_docs docs.max_doc
|
10
|
+
docs.deleted_docs merges.current merges.current_docs merges.current_size_in_bytes
|
11
|
+
merges.total merges.total_time_in_millis merges.total_docs
|
12
|
+
merges.total_size_in_bytes refresh.total refresh.total_time_in_millis flush.total
|
13
|
+
flush.total_time_in_millis
|
14
|
+
)
|
6
15
|
|
7
|
-
|
8
|
-
|
16
|
+
DATABASE_INDEX = /^indices\./
|
17
|
+
def metrics
|
18
|
+
unfiltered_metrics.map do |k, v|
|
19
|
+
if k.match(DATABASE_INDEX)
|
20
|
+
_, index_name, key = k.split(".", 3)
|
21
|
+
Metric.new("#{prefix}.#{key}", v, time, index: index_name)
|
22
|
+
else
|
23
|
+
Metric.new("#{prefix}.#{k}", v, time)
|
24
|
+
end
|
25
|
+
end.compact
|
9
26
|
end
|
10
27
|
end
|
11
28
|
end
|
data/lib/metrix/fpm.rb
CHANGED
@@ -2,6 +2,13 @@ require "metrix/base"
|
|
2
2
|
|
3
3
|
module Metrix
|
4
4
|
class FPM < Base
|
5
|
+
set_prefix "fpm"
|
6
|
+
set_known_metrics %w(
|
7
|
+
accepted_conn start_since accepted_conn listen_queue max_listen_queue
|
8
|
+
listen_queue_len idle_processes active_processes total_processes max_active_processes
|
9
|
+
max_children_reached slow_requests
|
10
|
+
)
|
11
|
+
|
5
12
|
def initialize(data)
|
6
13
|
@data = data
|
7
14
|
@time = Time.now
|
data/lib/metrix/load.rb
CHANGED
data/lib/metrix/mongodb.rb
CHANGED
@@ -1,28 +1,45 @@
|
|
1
|
-
require "metrix/
|
1
|
+
require "metrix/json_metric"
|
2
2
|
require "metrix/metric"
|
3
3
|
|
4
4
|
module Metrix
|
5
|
-
class Mongodb <
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
class Mongodb < Base
|
6
|
+
include JsonMetric
|
7
|
+
set_prefix "mongodb"
|
8
|
+
set_known_metrics %w(
|
9
|
+
asserts.msg asserts.regular asserts.rollovers asserts.user asserts.warning backgroundFlushing.average_ms
|
10
|
+
backgroundFlushing.flushes backgroundFlushing.last_ms backgroundFlushing.total_ms connections.available connections.current
|
11
|
+
connections.totalCreated cursors.clientCursors_size cursors.timedOut cursors.totalOpen dur.commits dur.commitsInWriteLock
|
12
|
+
dur.compression dur.earlyCommits dur.journaledMB dur.timeMs.dt dur.timeMs.prepLogBuffer dur.timeMs.remapPrivateView
|
13
|
+
dur.timeMs.writeToDataFiles dur.timeMs.writeToJournal dur.writeToDataFilesMB extra_info.page_faults globalLock.activeClients.readers
|
14
|
+
globalLock.activeClients.total globalLock.activeClients.writers globalLock.currentQueue.readers globalLock.currentQueue.total
|
15
|
+
globalLock.currentQueue.writers globalLock.lockTime globalLock.totalTime indexCounters.accesses indexCounters.hits
|
16
|
+
indexCounters.missRatio indexCounters.misses indexCounters.resets mem.mapped mem.mappedWithJournal mem.resident mem.virtual
|
17
|
+
metrics.document.deleted metrics.document.inserted metrics.document.returned metrics.document.updated metrics.getLastError.wtime.num
|
18
|
+
metrics.getLastError.wtime.totalMillis metrics.getLastError.wtimeouts metrics.operation.fastmod metrics.operation.idhack
|
19
|
+
metrics.operation.scanAndOrder metrics.queryExecutor.scanned metrics.record.moves metrics.repl.apply.batches.num
|
20
|
+
metrics.repl.apply.batches.totalMillis metrics.repl.apply.ops metrics.repl.buffer.count metrics.repl.buffer.maxSizeBytes
|
21
|
+
metrics.repl.buffer.sizeBytes metrics.repl.network.bytes metrics.repl.network.getmores.num metrics.repl.network.getmores.totalMillis
|
22
|
+
metrics.repl.network.ops metrics.repl.network.readersCreated metrics.repl.oplog.insert.num metrics.repl.oplog.insert.totalMillis
|
23
|
+
metrics.repl.oplog.insertBytes metrics.repl.preload.docs.num metrics.repl.preload.docs.totalMillis metrics.repl.preload.indexes.num
|
24
|
+
metrics.repl.preload.indexes.totalMillis metrics.ttl.deletedDocuments metrics.ttl.passes network.bytesIn network.bytesOut
|
25
|
+
network.numRequests opcounters.command opcounters.delete opcounters.getmore opcounters.insert opcounters.query
|
26
|
+
opcounters.update opcountersRepl.command opcountersRepl.delete opcountersRepl.getmore opcountersRepl.insert opcountersRepl.query
|
27
|
+
opcountersRepl.update recordStats.accessesNotInMemory recordStats.pageFaultExceptionsThrown recordStats.timeAcquiringMicros.R
|
28
|
+
recordStats.timeAcquiringMicros.W recordStats.timeAcquiringMicros.r recordStats.timeAcquiringMicros.r recordStats.timeAcquiringMicros.w
|
29
|
+
recordStats.timeAcquiringMicros.w recordStats.timeLockedMicros.R recordStats.timeLockedMicros.W recordStats.timeLockedMicros.r
|
30
|
+
recordStats.timeLockedMicros.r recordStats.timeLockedMicros.w recordStats.timeLockedMicros.w uptime
|
31
|
+
)
|
11
32
|
|
12
33
|
DATABASE_RECORD_SET = /^recordStats\.(.*?)\.(.*)/
|
13
34
|
DATABASE_LOCK = /^locks/
|
14
35
|
|
15
|
-
def
|
16
|
-
metric[DATABASE_RECORD_SET] ||
|
17
|
-
metric[DATABASE_LOCK] ||
|
18
|
-
super
|
19
|
-
end
|
20
|
-
|
21
|
-
def tagged_metrics
|
36
|
+
def metrics
|
22
37
|
unfiltered_metrics.map do |k, v|
|
38
|
+
next unless self.class.known_metrics.include?(k)
|
23
39
|
if k.match(DATABASE_RECORD_SET)
|
40
|
+
next if %w(accessesNotInMemory pageFaultExceptionsThrown).include?($2)
|
24
41
|
database = $1
|
25
|
-
Metric.new(
|
42
|
+
Metric.new("#{prefix}.#{$2}", v, time, database: database)
|
26
43
|
elsif k.match(DATABASE_LOCK)
|
27
44
|
chunks = k.split(".")
|
28
45
|
offset = 0
|
@@ -31,6 +48,8 @@ module Metrix
|
|
31
48
|
metric = chunks[(2 + offset)..-1].join(".")
|
32
49
|
database = "." if database == ""
|
33
50
|
Metric.new("#{prefix}.recordStats.#{metric}", v, time, database: database)
|
51
|
+
else
|
52
|
+
Metric.new("#{prefix}.#{k}", v, time)
|
34
53
|
end
|
35
54
|
end.compact
|
36
55
|
end
|
data/lib/metrix/nginx.rb
CHANGED
@@ -2,6 +2,9 @@ require "metrix/base"
|
|
2
2
|
|
3
3
|
module Metrix
|
4
4
|
class Nginx < Base
|
5
|
+
set_prefix "nginx"
|
6
|
+
set_known_metrics %w(accepts handled requests active_connections reading writing waiting)
|
7
|
+
|
5
8
|
def initialize(data)
|
6
9
|
@data = data
|
7
10
|
@time = Time.now
|
@@ -17,10 +20,6 @@ module Metrix
|
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
20
|
-
def prefix
|
21
|
-
"nginx"
|
22
|
-
end
|
23
|
-
|
24
23
|
def extract(data = nil)
|
25
24
|
{
|
26
25
|
accepts: accepts,
|
@@ -3,6 +3,10 @@ require "metrix/base"
|
|
3
3
|
module Metrix
|
4
4
|
class ProcessMetric < Base
|
5
5
|
attr_reader :time
|
6
|
+
set_known_metrics %w(minflt cminflt majflt cmajflt utime stime cutime sctime num_threads
|
7
|
+
vsize rss
|
8
|
+
)
|
9
|
+
set_prefix "system.process"
|
6
10
|
|
7
11
|
class << self
|
8
12
|
def all
|
@@ -46,10 +50,6 @@ module Metrix
|
|
46
50
|
}
|
47
51
|
end
|
48
52
|
|
49
|
-
def prefix
|
50
|
-
"system.process"
|
51
|
-
end
|
52
|
-
|
53
53
|
def cast_int(str)
|
54
54
|
Integer(str) rescue str
|
55
55
|
end
|
data/lib/metrix/system.rb
CHANGED
@@ -2,6 +2,12 @@ require "metrix/base"
|
|
2
2
|
|
3
3
|
module Metrix
|
4
4
|
class System < Base
|
5
|
+
set_prefix "system"
|
6
|
+
set_known_metrics %w(
|
7
|
+
processes procs_running procs_blocked ctxt cpu.user cpu.nice cpu.system cpu.idle
|
8
|
+
cpu.iowait cpu.irq cpu.softirq
|
9
|
+
)
|
10
|
+
|
5
11
|
class Cpu
|
6
12
|
def initialize(values)
|
7
13
|
@values = values
|
@@ -49,10 +55,6 @@ module Metrix
|
|
49
55
|
}
|
50
56
|
end
|
51
57
|
|
52
|
-
def prefix
|
53
|
-
"system"
|
54
|
-
end
|
55
|
-
|
56
58
|
def cpu
|
57
59
|
Cpu.new(@raw[/^cpu (.*)/, 1].split(" ").map(&:to_i))
|
58
60
|
end
|
data/lib/metrix/version.rb
CHANGED
File without changes
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
require "metrix/elastic_search"
|
3
3
|
|
4
|
-
describe "
|
4
|
+
describe "Metrix::ElasticSearch" do
|
5
5
|
let(:payload) { FIXTURES_PATH.join("es_status.json").read }
|
6
6
|
subject(:es_status) { Metrix::ElasticSearch.new(payload) }
|
7
7
|
it { should_not be_nil }
|
@@ -9,7 +9,8 @@ describe "Metrox::ElasticSearch" do
|
|
9
9
|
it { subject.time.should_not be_nil }
|
10
10
|
|
11
11
|
describe "#metrics" do
|
12
|
-
subject(:
|
12
|
+
subject(:extracted) { hash_metrics(es_status.metrics) }
|
13
|
+
|
13
14
|
it { should be_kind_of(Hash) }
|
14
15
|
it { should_not be_empty }
|
15
16
|
|
@@ -17,27 +18,38 @@ describe "Metrox::ElasticSearch" do
|
|
17
18
|
"elasticsearch._shards.total"=>10,
|
18
19
|
"elasticsearch._shards.successful"=>5,
|
19
20
|
"elasticsearch._shards.failed"=>0,
|
20
|
-
"elasticsearch.indices.search.index.primary_size_in_bytes"=>2008,
|
21
|
-
"elasticsearch.indices.search.index.size_in_bytes"=>2008,
|
22
|
-
"elasticsearch.indices.search.translog.operations"=>1,
|
23
|
-
"elasticsearch.indices.search.docs.num_docs"=>1,
|
24
|
-
"elasticsearch.indices.search.docs.max_doc"=>1,
|
25
|
-
"elasticsearch.indices.search.docs.deleted_docs"=>0,
|
26
|
-
"elasticsearch.indices.search.merges.current"=>0,
|
27
|
-
"elasticsearch.indices.search.merges.current_docs"=>0,
|
28
|
-
"elasticsearch.indices.search.merges.current_size_in_bytes"=>0,
|
29
|
-
"elasticsearch.indices.search.merges.total"=>0,
|
30
|
-
"elasticsearch.indices.search.merges.total_time_in_millis"=>0,
|
31
|
-
"elasticsearch.indices.search.merges.total_docs"=>0,
|
32
|
-
"elasticsearch.indices.search.merges.total_size_in_bytes"=>0,
|
33
|
-
"elasticsearch.indices.search.refresh.total"=>6,
|
34
|
-
"elasticsearch.indices.search.refresh.total_time_in_millis"=>124,
|
35
|
-
"elasticsearch.indices.search.flush.total"=>0,
|
36
21
|
}.each do |k, v|
|
37
22
|
it "should set attributes #{k.inspect} to #{v.inspect}" do
|
38
23
|
subject[k].value.should eq(v)
|
39
24
|
end
|
40
25
|
end
|
26
|
+
|
27
|
+
it { should_not include("elasticsearch.indices.search.flush.total") }
|
41
28
|
it { subject.keys.count.should eq(20) }
|
42
29
|
end
|
30
|
+
|
31
|
+
it { subject.unfiltered_metrics.should include("indices.search.flush.total") }
|
32
|
+
|
33
|
+
describe "#metrics" do
|
34
|
+
subject(:tagged_metrics) { es_status.metrics }
|
35
|
+
it { should be_kind_of(Array) }
|
36
|
+
it { should_not be_empty }
|
37
|
+
|
38
|
+
it { subject.count.should eq(20) }
|
39
|
+
|
40
|
+
describe "first metric" do
|
41
|
+
|
42
|
+
before :each do
|
43
|
+
es_status.stub(:time) { Time.at(10) }
|
44
|
+
end
|
45
|
+
|
46
|
+
subject(:first) { tagged_metrics.select { |m| m.key == "elasticsearch.index.primary_size_in_bytes" }.first }
|
47
|
+
it { should_not be_nil }
|
48
|
+
it { subject.key.should start_with("elasticsearch.index.primary_size_in_bytes") }
|
49
|
+
it { subject.value.should eq(2008) }
|
50
|
+
it { subject.time.should_not be_nil }
|
51
|
+
it { subject.tags.should eq(index: "search") }
|
52
|
+
it { subject.to_opentsdb.should eq("put elasticsearch.index.primary_size_in_bytes 10 2008 index=search hostname=test.host") }
|
53
|
+
end
|
54
|
+
end
|
43
55
|
end
|
@@ -7,19 +7,15 @@ describe "Metrix::Mongodb" do
|
|
7
7
|
subject(:status) { Metrix::Mongodb.new(payload) }
|
8
8
|
it { should_not be_nil }
|
9
9
|
|
10
|
-
describe "
|
11
|
-
subject(:
|
12
|
-
it { should be_kind_of(Array) }
|
13
|
-
it { should_not be_empty }
|
14
|
-
end
|
10
|
+
describe "metric keys" do
|
11
|
+
subject(:keys) { status.metrics.map(&:key) }
|
15
12
|
|
16
|
-
describe "ignore_metric?" do
|
17
13
|
%w(
|
18
|
-
|
19
|
-
|
20
|
-
).each do |
|
21
|
-
it "should
|
22
|
-
|
14
|
+
mongodb.ok mongodb.mem.bits mongodb.pid
|
15
|
+
mongodb.uptimeMillis mongodb.uptimeEstimate
|
16
|
+
).each do |name|
|
17
|
+
it "should not have key #{name.inspect}" do
|
18
|
+
subject.should_not include(name)
|
23
19
|
end
|
24
20
|
end
|
25
21
|
end
|
@@ -28,17 +24,6 @@ describe "Metrix::Mongodb" do
|
|
28
24
|
subject(:metrics) { hash_metrics(status.metrics) }
|
29
25
|
it { should be_kind_of(Hash) }
|
30
26
|
|
31
|
-
%w(
|
32
|
-
mongodb.ok mongodb.mem.bits mongodb.pid mongodb.uptime
|
33
|
-
mongodb.uptimeMillis mongodb.uptimeEstimate
|
34
|
-
mongodb.recordStats.opentsdb.pageFaultExceptionsThrown
|
35
|
-
mongodb.locks.local.timeLockedMicros.r
|
36
|
-
).each do |name|
|
37
|
-
it "should not have key #{name.inspect}" do
|
38
|
-
subject.should_not have_key(name)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
27
|
{
|
43
28
|
"mongodb.globalLock.totalTime"=>474819000,
|
44
29
|
"mongodb.globalLock.lockTime"=>1060706,
|
@@ -49,6 +34,7 @@ describe "Metrix::Mongodb" do
|
|
49
34
|
"mongodb.globalLock.activeClients.readers"=>0,
|
50
35
|
"mongodb.globalLock.activeClients.writers"=>0,
|
51
36
|
"mongodb.mem.resident"=>9,
|
37
|
+
"mongodb.uptime"=> 475,
|
52
38
|
"mongodb.mem.virtual"=>2814,
|
53
39
|
"mongodb.recordStats.accessesNotInMemory" => 0,
|
54
40
|
"mongodb.recordStats.pageFaultExceptionsThrown" => 0,
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Metrix" do
|
4
|
+
subject(:metrix) { Metrix }
|
5
|
+
it { should_not be_nil }
|
6
|
+
|
7
|
+
describe "#known_metrics" do
|
8
|
+
subject(:known_metrics) { Metrix.known_metrics }
|
9
|
+
it { should be_kind_of(Array) }
|
10
|
+
it { should_not be_empty }
|
11
|
+
it { subject.count.should eq(170) }
|
12
|
+
|
13
|
+
it { should include("mongodb.uptime") }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/spec/spec_helper.rb
CHANGED
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.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -95,13 +95,13 @@ files:
|
|
95
95
|
- lib/metrix/elastic_search.rb
|
96
96
|
- lib/metrix/fpm.rb
|
97
97
|
- lib/metrix/graphite.rb
|
98
|
-
- lib/metrix/
|
98
|
+
- lib/metrix/json_metric.rb
|
99
99
|
- lib/metrix/load.rb
|
100
100
|
- lib/metrix/metric.rb
|
101
101
|
- lib/metrix/mongodb.rb
|
102
102
|
- lib/metrix/nginx.rb
|
103
103
|
- lib/metrix/opentsdb.rb
|
104
|
-
- lib/metrix/
|
104
|
+
- lib/metrix/process_metric.rb
|
105
105
|
- lib/metrix/reporter/stdout.rb
|
106
106
|
- lib/metrix/system.rb
|
107
107
|
- lib/metrix/version.rb
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- spec/fixtures/php.fpm.status.txt
|
116
116
|
- spec/fixtures/proc.26928.txt
|
117
117
|
- spec/fixtures/proc.stat.txt
|
118
|
+
- spec/lib/metrix/base_spec.rb
|
118
119
|
- spec/lib/metrix/cli_spec.rb
|
119
120
|
- spec/lib/metrix/elastic_search_spec.rb
|
120
121
|
- spec/lib/metrix/fpm_spec.rb
|
@@ -124,8 +125,9 @@ files:
|
|
124
125
|
- spec/lib/metrix/mongodb_spec.rb
|
125
126
|
- spec/lib/metrix/nginx_spec.rb
|
126
127
|
- spec/lib/metrix/opentsdb_spec.rb
|
127
|
-
- spec/lib/metrix/
|
128
|
+
- spec/lib/metrix/process_metric_spec.rb
|
128
129
|
- spec/lib/metrix/system_spec.rb
|
130
|
+
- spec/lib/metrix_spec.rb
|
129
131
|
- spec/spec_helper.rb
|
130
132
|
homepage: ''
|
131
133
|
licenses: []
|
@@ -161,6 +163,7 @@ test_files:
|
|
161
163
|
- spec/fixtures/php.fpm.status.txt
|
162
164
|
- spec/fixtures/proc.26928.txt
|
163
165
|
- spec/fixtures/proc.stat.txt
|
166
|
+
- spec/lib/metrix/base_spec.rb
|
164
167
|
- spec/lib/metrix/cli_spec.rb
|
165
168
|
- spec/lib/metrix/elastic_search_spec.rb
|
166
169
|
- spec/lib/metrix/fpm_spec.rb
|
@@ -170,6 +173,7 @@ test_files:
|
|
170
173
|
- spec/lib/metrix/mongodb_spec.rb
|
171
174
|
- spec/lib/metrix/nginx_spec.rb
|
172
175
|
- spec/lib/metrix/opentsdb_spec.rb
|
173
|
-
- spec/lib/metrix/
|
176
|
+
- spec/lib/metrix/process_metric_spec.rb
|
174
177
|
- spec/lib/metrix/system_spec.rb
|
178
|
+
- spec/lib/metrix_spec.rb
|
175
179
|
- spec/spec_helper.rb
|