monus 0.1.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 00ff60b80f644ca72f7393dcf996d4ed371e0af0
4
- data.tar.gz: 309bd8855e1b35b90b9122f79c92d39a751fc49e
3
+ metadata.gz: 482f21054f845318dd5dc32a57521df44f666d20
4
+ data.tar.gz: 2fc3c3bbe40cde0970cff470a60b7a3054b12eea
5
5
  SHA512:
6
- metadata.gz: 01c54b96469349af6f4ced917b27acb0cd92185f67bd9f46fddbccd194e090a74f488e978e11f9e24ea269691638f4cad20f5c88127a579584ca833dc392ccb4
7
- data.tar.gz: 2064edb35c51c00c2674415704fc30d92e586d2d4ea0e2d7ae30e486136f9a95a8e0c4188d5d67f7c7c6fc4979a06343ca40e79d404fee4e2892aea9bfea6be5
6
+ metadata.gz: e151e3e6a55b9d44026b8abd76ed793dcc8a7db59205b805fe332e2de7d93f575465ae70ba0b15fff7a838cbc0bda24baf0cc8c3a1a16965c9b411949e6a621c
7
+ data.tar.gz: d2bba43dfe9c57d401696df8583266392e61bf2bf67bacdb9acb11a0b4c83d64ec590d903ac502786505d30b41bef5dbfa450a14b09a5c9b221626064e00059f
@@ -35,9 +35,13 @@ module Monus::Backend::InfluxDB
35
35
  @global_tags = Monus.options.dig(:influxdb_options, :global_tags)&.map { |key, value| ",#{key}=#{value}" }&.join
36
36
  end
37
37
 
38
- def write(field, value)
39
- value = "\"#{value.gsub '"', '\"'}\"" if value.kind_of? String
40
- message = "#{@measurement}#{@global_tags} #{field}=#{value}"
38
+ def write(fields, tags = nil)
39
+ fields = fields.map { |key, value| "#{key}=#{value.inspect}" }.join(',')
40
+
41
+ tags = tags&.map { |key, value| ",#{key}=#{value}" }&.join
42
+
43
+ message = "#{@measurement}#{@global_tags}#{tags} #{fields}"
44
+
41
45
  case @mode
42
46
  when :udp
43
47
  Monus.engine.send_udp_datagram message, @host, @udp_port
@@ -0,0 +1,29 @@
1
+ module Monus::BuiltInMetric::EmThreadpool
2
+ def activate
3
+ @interval = Monus.options.dig(:em_threadpool_metric_options, :interval) || 1
4
+
5
+ threadpool = nil
6
+
7
+ Monus.engine.every @interval do
8
+ threadpool ||= EM.send(:instance_variable_get, :@threadpool)
9
+
10
+ if threadpool
11
+ by_status = threadpool.group_by(&:status).transform_values(&:size)
12
+
13
+ total = threadpool.size
14
+ run = by_status['run']
15
+ load_percent = run.to_f / total
16
+ broken = total - run - by_status['sleep']
17
+
18
+ Monus.write em_threadpool_load: load_percent,
19
+ em_threadpool_run: run,
20
+ em_threadpool_total: total,
21
+ em_threadpool_broken: broken
22
+ end
23
+ end
24
+ end
25
+
26
+ extend self
27
+
28
+ Monus::BuiltInMetric.register :em_threadpool, self
29
+ end
@@ -0,0 +1,22 @@
1
+ module Monus::BuiltInMetric::EmTicks
2
+ def activate
3
+ @interval = Monus.options.dig(:em_ticks_metric_options, :interval) || 1
4
+
5
+ counter, time = 0, Time.now
6
+
7
+ EM.tick_loop do
8
+ counter += 1
9
+ delta = Time.now - time
10
+ if delta > @interval
11
+ ticks = (counter.to_f / delta).round
12
+ Monus.set :em_ticks, ticks
13
+ counter = 0
14
+ time = Time.now
15
+ end
16
+ end
17
+ end
18
+
19
+ extend self
20
+
21
+ Monus::BuiltInMetric.register :em_ticks, self
22
+ end
data/lib/monus.rb CHANGED
@@ -49,8 +49,12 @@ module Monus
49
49
  end
50
50
  end
51
51
 
52
- def self.set(field, value)
53
- backend.write field, value
52
+ def self.write(fields, context = nil)
53
+ backend.write(fields, context)
54
+ end
55
+
56
+ def self.set(field, value, context = nil)
57
+ write({field => value}, context)
54
58
  end
55
59
 
56
60
  def self.accept(field)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xanders
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-23 00:00:00.000000000 Z
11
+ date: 2019-05-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Monus is an in-process monitoring library for several backends and engines
14
14
  email: necropolis@inbox.ru
@@ -22,6 +22,8 @@ files:
22
22
  - lib/monus/backend.rb
23
23
  - lib/monus/backends/influxdb.rb
24
24
  - lib/monus/built_in_metric.rb
25
+ - lib/monus/built_in_metrics/em_threadpool.rb
26
+ - lib/monus/built_in_metrics/em_ticks.rb
25
27
  - lib/monus/built_in_metrics/works.rb
26
28
  - lib/monus/engine.rb
27
29
  - lib/monus/engines/pure.rb