salus 0.1.3 → 0.2.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 +5 -5
- data/lib/salus.rb +3 -0
- data/lib/salus/group.rb +2 -0
- data/lib/salus/metric.rb +9 -0
- data/lib/salus/metric/accumulator.rb +34 -0
- data/lib/salus/metric/delta.rb +36 -0
- data/lib/salus/version.rb +1 -1
- data/salus.gemspec +3 -3
- metadata +13 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 554783e06ea0a59372b6d61ef229caa7382fb9ecf97af677efced15303d0c6f1
|
|
4
|
+
data.tar.gz: 65ce8c9414a4385bdf98dd57c15ee8578e94c5a8c03b3f272164c753991edcd1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c50d9665b6f3334e5b41080003f8e18716a038de2fc8ece1a7efd3cc407e605db6014538cff79d6abef25cd4f65e3f1e103ffbd26b1f91b5f3af8ba421643963
|
|
7
|
+
data.tar.gz: d18166bcf2ca0deb09918a543967810ad9d075ff821dbb7fe89a3486a9477d207d20cc740f7fa93349d9880082bee8bf1762491dd66cc80641ed83df0df620e7
|
data/lib/salus.rb
CHANGED
|
@@ -129,11 +129,13 @@ module Salus
|
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
def tick
|
|
132
|
+
log DEBUG, "Tick..."
|
|
132
133
|
lazy_eval
|
|
133
134
|
return if @@_groups.empty?
|
|
134
135
|
pause = (Salus.interval - Salus.tick_timeout - Salus.render_timeout) / 2
|
|
135
136
|
pause = 1 if (pause <= 0)
|
|
136
137
|
|
|
138
|
+
log DEBUG, "Starting collection. Top-level groups to spawn: #{@@_groups.count}"
|
|
137
139
|
latch = CountDownLatch.new(@@_groups.count)
|
|
138
140
|
@@_groups.each do |k, v|
|
|
139
141
|
pool.process do
|
|
@@ -150,6 +152,7 @@ module Salus
|
|
|
150
152
|
log DEBUG, "Collection finished. Threads: #{pool.spawned} spawned, #{pool.waiting} waiting, #{Thread.list.count} total"
|
|
151
153
|
|
|
152
154
|
return if @@_renders.empty?
|
|
155
|
+
log DEBUG, "Starting #{@_renders.count} renderers"
|
|
153
156
|
latch = CountDownLatch.new(@@_renders.count)
|
|
154
157
|
@@_renders.each do |v|
|
|
155
158
|
pool.process do
|
data/lib/salus/group.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
require "forwardable"
|
|
2
2
|
require "salus/metric"
|
|
3
3
|
require "salus/metric/absolute"
|
|
4
|
+
require "salus/metric/accumulator"
|
|
4
5
|
require "salus/metric/counter"
|
|
6
|
+
require "salus/metric/delta"
|
|
5
7
|
require "salus/metric/derive"
|
|
6
8
|
require "salus/metric/gauge"
|
|
7
9
|
require "salus/metric/text"
|
data/lib/salus/metric.rb
CHANGED
|
@@ -144,6 +144,15 @@ module Salus
|
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
+
def clear
|
|
148
|
+
synchronize do
|
|
149
|
+
@last_calced_value = nil
|
|
150
|
+
@last_calced_ts = nil
|
|
151
|
+
@needs_update = true
|
|
152
|
+
@values.clear
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
147
156
|
protected
|
|
148
157
|
def option(key, *types)
|
|
149
158
|
@attributes[key] = types
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Salus
|
|
2
|
+
class Accumulator < Metric
|
|
3
|
+
STORAGE_DEPTH = 1
|
|
4
|
+
|
|
5
|
+
def push(opts={}, &block)
|
|
6
|
+
opts = {} unless opts.is_a?(Hash)
|
|
7
|
+
|
|
8
|
+
synchronize do
|
|
9
|
+
opts.each do |k, v|
|
|
10
|
+
validate(k, v)
|
|
11
|
+
@opts[k] = v unless [:value, :ttl, :timestamp].include?(k)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
if block_given?
|
|
15
|
+
v = begin
|
|
16
|
+
yield
|
|
17
|
+
rescue Exception => e
|
|
18
|
+
log DEBUG, e
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
validate(:value, v)
|
|
22
|
+
opts[:value] = v
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
prev = @values.empty? ? 0 : (@values.last.value || 0)
|
|
26
|
+
curr = opts[:value] || 0
|
|
27
|
+
|
|
28
|
+
@values << Value.new(prev+curr, opts[:timestamp] || Time.now.to_f, opts[:ttl] || @opts[:ttl])
|
|
29
|
+
@needs_update = true
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Salus
|
|
2
|
+
class Delta < Metric
|
|
3
|
+
def initialize(defaults={})
|
|
4
|
+
super(defaults)
|
|
5
|
+
option :minimum, Numeric
|
|
6
|
+
validate(:minimum, @opts[:minimum]) if @opts.key?(:minimum)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
protected
|
|
10
|
+
def calc
|
|
11
|
+
super
|
|
12
|
+
@last_calced_value = nil
|
|
13
|
+
|
|
14
|
+
if @values.length < STORAGE_DEPTH
|
|
15
|
+
return
|
|
16
|
+
elsif @values[0].expired?(@values[1].timestamp)
|
|
17
|
+
return
|
|
18
|
+
elsif !@values[0].value.is_a?(Numeric)
|
|
19
|
+
return
|
|
20
|
+
elsif !@values[1].value.is_a?(Numeric)
|
|
21
|
+
return
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
@last_calced_value = begin
|
|
25
|
+
dt = (@values[1].timestamp - @values[0].timestamp)
|
|
26
|
+
dv = (@values[1].value - @values[0].value)
|
|
27
|
+
r = (dt == 0) ? nil : dv
|
|
28
|
+
if @opts.key?(:minimum) && !r.nil? && r < @opts[:minimum]
|
|
29
|
+
nil
|
|
30
|
+
else
|
|
31
|
+
r
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/lib/salus/version.rb
CHANGED
data/salus.gemspec
CHANGED
|
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
22
|
spec.require_paths = ["lib"]
|
|
23
23
|
|
|
24
|
-
spec.add_development_dependency "bundler", "~> 1
|
|
24
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
|
25
25
|
|
|
26
|
-
spec.add_dependency "thor", "~> 0
|
|
27
|
-
spec.add_development_dependency "rake", "
|
|
26
|
+
spec.add_dependency "thor", "~> 1.0"
|
|
27
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
29
29
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: salus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- divanikus
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-03-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -16,42 +16,42 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1
|
|
19
|
+
version: '2.1'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1
|
|
26
|
+
version: '2.1'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: thor
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0
|
|
33
|
+
version: '1.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0
|
|
40
|
+
version: '1.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 12.3.3
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: 12.3.3
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: rspec
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -93,7 +93,9 @@ files:
|
|
|
93
93
|
- lib/salus/logging.rb
|
|
94
94
|
- lib/salus/metric.rb
|
|
95
95
|
- lib/salus/metric/absolute.rb
|
|
96
|
+
- lib/salus/metric/accumulator.rb
|
|
96
97
|
- lib/salus/metric/counter.rb
|
|
98
|
+
- lib/salus/metric/delta.rb
|
|
97
99
|
- lib/salus/metric/derive.rb
|
|
98
100
|
- lib/salus/metric/gauge.rb
|
|
99
101
|
- lib/salus/metric/text.rb
|
|
@@ -136,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
136
138
|
version: '0'
|
|
137
139
|
requirements: []
|
|
138
140
|
rubyforge_project:
|
|
139
|
-
rubygems_version: 2.6.
|
|
141
|
+
rubygems_version: 2.7.6.2
|
|
140
142
|
signing_key:
|
|
141
143
|
specification_version: 4
|
|
142
144
|
summary: Simple DSL for writing metrics collecting agents.
|