monus 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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