statscloud 1.0.5 → 1.0.6

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
  SHA256:
3
- metadata.gz: 5d9d7c865dacdf778f52f17b9faaa8d626b9b32d4426a249dd08d6774ca48287
4
- data.tar.gz: 2f179fc402e2e4bb8297089be6f759ef641b78bd21f42b20015d6a7e5e24deaf
3
+ metadata.gz: 71d82d6becb4a48006bf0eed5eca4a1d99f9ea643b9d29d2d6f067e69ad85f80
4
+ data.tar.gz: 46516bb9c8bf1abb58ec5432c90737d0938f660c89088e00c01a432cfe682a64
5
5
  SHA512:
6
- metadata.gz: b747c318463f76dcf2919a19e7dd474bb7eb35458cc90a43925ec45e5ebd907f4c17b14a3fa1f379e6206ea885ec3687d39869a19cc23760475ba36017a3131b
7
- data.tar.gz: 933d056e27e42986cc46d817763157bf03db70139dbc36ed82f41a0c3afd50dffb4670b9c0b55e1bc92be250d3d8fd492a08af4c3e4f409302fffdc7d721395f
6
+ metadata.gz: 8cb1317f0a0d53d8bbf5ab8a4ab6ec27b4ebb6a94e6cba5d413baaf4bc2e40ffcf7a7bbc06743c8f1b89d5855a9b0ffc26bd2283e1f0d4365b4085a95d08d994
7
+ data.tar.gz: be1ccc9c5ac51dc08befc6361e45ee52c8e6cc9e91dcdb1a2b04860131bbbd1656f6597e269ceb4c5aaab206b41d69f872a166f2defc82e9b95ac3077cfc9562
data/Gemfile.lock CHANGED
@@ -2,7 +2,7 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  statscloud (1.0.5)
5
- activesupport (>= 5.0.0.1)
5
+ activesupport (~> 5.2)
6
6
  crc32 (~> 1.0.1)
7
7
  eventmachine (~> 1.2)
8
8
  fileutils
data/README.md CHANGED
@@ -44,12 +44,17 @@ Or install it yourself as:
44
44
  ```
45
45
  You can combine these methods calling them as a chain.
46
46
 
47
- 4. Use StatsCLoud.meter with `record_event` method for recording one event or `record_events` to send multiple events to cluster from any place of you application.
47
+ 4. Use StatsCLoud.meter with `record_event` method for recording one event or `record_events` to send multiple events to cluster from any place of your application.
48
48
 
49
49
  ```ruby
50
50
  StatsCloud.meter.record_event('event', 1)
51
51
  StatsCloud.meter.record_events({name: 'gauge', measurement: 123}, {name: 'counter'})
52
52
  ```
53
+ Also, you can use these methods directly from StatsCloud module, starting with 1.0.6 version of the client.
54
+ ```ruby
55
+ StatsCloud.record_event('event', 1)
56
+ StatsCloud.record_events({name: 'gauge', measurement: 123}, {name: 'counter'})
57
+ ```
53
58
  ### Ruby
54
59
  1. Install `statscloud` gem:
55
60
 
@@ -64,12 +69,18 @@ Or install it yourself as:
64
69
  ```ruby
65
70
  StatsCloud.with_environment('test').with_tags(['usa', 'server_1']).start
66
71
  ```
67
- 4. Send metrics via StatsCloud.meter
72
+ 4. Send metrics via StatsCloud.meter or directly via StatsCloud module.
68
73
 
69
74
  ```ruby
70
75
  meter = StatsCloud.meter
71
76
  meter.record_event('event', 1)
72
- meter.record_events({name: 'gauge', measurement: 123}, {name: 'counter'});
77
+ meter.record_events({name: 'gauge', measurement: 123}, {name: 'counter'})
78
+
79
+ # also available
80
+
81
+ StatsCloud.record_event('some_event', 4)
82
+ StatsCloud.record_events({name: 'some_gauge', measurement: 321})
83
+
73
84
  ```
74
85
 
75
86
  5. Stop work of StatsCloud service when 'time is over'.
@@ -18,7 +18,7 @@ module StatsCloud
18
18
  # cluster api host.
19
19
  #
20
20
  # @api public
21
- def initialize(env, host = "https://cluster-api-v1.statscloud.agiliumlabs.cloud")
21
+ def initialize(env, host = "https://cluster-api-v1.statscloud.statscloud.io")
22
22
  @environment = env
23
23
  @host = host
24
24
  end
@@ -33,6 +33,7 @@ module StatsCloud
33
33
 
34
34
  def get_config_from_file(file)
35
35
  return ::YAML.load_file(file) if File.exist?(file)
36
+
36
37
  {}
37
38
  end
38
39
 
@@ -58,6 +59,7 @@ module StatsCloud
58
59
  def process_array_fields(config, extra_config, source_mappings, file_name)
59
60
  array_fields.each do |array_field|
60
61
  next unless it_not_empty_array?(extra_config, array_field)
62
+
61
63
  config[array_field] ||= []
62
64
  source_mappings[array_field.to_sym].push(source_map_index(config, extra_config, array_field, file_name))
63
65
  config[array_field] = config[array_field].concat(extra_config[array_field])
@@ -67,6 +69,7 @@ module StatsCloud
67
69
  def process_object_fields(config, extra_config, source_mappings, file_name)
68
70
  object_fields.each do |object_field|
69
71
  next unless extra_config[object_field]&.kind_of?(Hash)
72
+
70
73
  source_mappings[object_field.to_sym].push(
71
74
  fields: extra_config[object_field].keys,
72
75
  sourceFile: file_name
@@ -43,6 +43,7 @@ module StatsCloud
43
43
 
44
44
  def cluster_error_message
45
45
  return "Unable to get information about cluster." unless @cluster
46
+
46
47
  @cluster[:status][:error]
47
48
  end
48
49
 
@@ -68,6 +68,38 @@ module StatsCloud
68
68
  @statsmeter_client
69
69
  end
70
70
 
71
+ # Records a single event.
72
+ #
73
+ # @param [+String+] name
74
+ # name of the event to record.
75
+ # @param [+Integer+] measurement
76
+ # optional measurement, depending on metrics type.
77
+ #
78
+ # Calls statsmeter client record_event method.
79
+ def record_event(name, measurement = 0)
80
+ @statsmeter_client&.record_event(name, measurement)
81
+ end
82
+
83
+ # Records several events at once.
84
+ #
85
+ # @param [+Array+] events
86
+ # events to send (each should have name and optional measurement fields).
87
+ #
88
+ # Calls statsmeter record_events method.
89
+ def record_events(*events)
90
+ @statsmeter_client&.record_events(*events)
91
+ end
92
+
93
+ # Records an array of events at once.
94
+ #
95
+ # @param [+Array+] events
96
+ # array of events to send (each shoud have name and optional measurement fields).
97
+ #
98
+ # Calls statsmeter client record_events_array method.
99
+ def record_events_array(events)
100
+ @statsmeter_client&.record_events_array(events)
101
+ end
102
+
71
103
  # Returns cluster status.
72
104
  #
73
105
  # @return [Hash]
@@ -75,6 +107,7 @@ module StatsCloud
75
107
  # @api public
76
108
  def cluster_status
77
109
  return unless @cluster_client
110
+
78
111
  cluster = @cluster_client.get_cluster(@token, @app)&.body
79
112
  check_cluster_status(cluster)
80
113
  cluster[:status][:status] if cluster
@@ -107,6 +107,7 @@ module StatsCloud
107
107
  measurement = get_event_measurement(event)&.to_f
108
108
 
109
109
  next unless @names_map && @names_map[name]
110
+
110
111
  binary_length = get_binary_length(@event_name_size_in_bytes)
111
112
  plain_length = get_plain_length(name, measurement)
112
113
 
@@ -119,8 +120,10 @@ module StatsCloud
119
120
  # Sends all pending events to statscloud.
120
121
  def flush_events
121
122
  return if @pending_binary_offset.zero?
123
+
122
124
  checksum = crc32.calculate(@pending_plain_events.buffer, @pending_plain_offset, 0)
123
125
  return if checksum.zero?
126
+
124
127
  @pending_binary_events.writeInt32BE(checksum, @pending_binary_offset)
125
128
  send_message @pending_binary_events
126
129
  set_pending_values
@@ -129,6 +132,7 @@ module StatsCloud
129
132
  # Shows statsmeter state.
130
133
  def connected?
131
134
  return false unless @client
135
+
132
136
  @client.state == :connect
133
137
  end
134
138
 
@@ -4,5 +4,5 @@ module StatsCloud
4
4
  # version of statscloud-ruby-client.
5
5
  #
6
6
  # Type: *String*
7
- VERSION = "1.0.5"
7
+ VERSION = "1.0.6"
8
8
  end
data/lib/statscloud.rb CHANGED
@@ -20,7 +20,7 @@ module StatsCloud
20
20
  #
21
21
  # @api public
22
22
  def start(base_config = nil)
23
- StatsCloud::Client.instance.start(base_config)
23
+ stats_cloud_instance.start(base_config)
24
24
  rescue StandardError => error
25
25
  logger.error error
26
26
  end
@@ -29,7 +29,7 @@ module StatsCloud
29
29
  #
30
30
  # @return StatsCloud::Client
31
31
  def with_environment(env)
32
- StatsCloud::Client.instance.with_environment(env)
32
+ stats_cloud_instance.with_environment(env)
33
33
  rescue StandardError => error
34
34
  logger.error error
35
35
  end
@@ -38,7 +38,7 @@ module StatsCloud
38
38
  #
39
39
  # @return StatsCloud::Client
40
40
  def with_tags(tags)
41
- StatsCloud::Client.instance.with_tags(tags)
41
+ stats_cloud_instance.with_tags(tags)
42
42
  rescue StandardError => error
43
43
  logger.error error
44
44
  end
@@ -49,18 +49,44 @@ module StatsCloud
49
49
  #
50
50
  # @api public
51
51
  def meter
52
- StatsCloud::Client.instance.meter
52
+ stats_cloud_instance.meter
53
53
  rescue StandardError => error
54
54
  logger.error error
55
55
  end
56
56
 
57
+ # Records a single event.
58
+ #
59
+ # @param [+String+] name
60
+ # name of the event to record.
61
+ # @param [+Integer+] measurement
62
+ # optional measurement, depending on metrics type.
63
+ def record_event(name, measurement = 0)
64
+ stats_cloud_instance.record_event(name, measurement)
65
+ end
66
+
67
+ # Records several events at once.
68
+ #
69
+ # @param [+Array+] events
70
+ # events to send (each should have name and optional measurement fields).
71
+ def record_events(*events)
72
+ stats_cloud_instance.record_events(*events)
73
+ end
74
+
75
+ # Records an array of events at once.
76
+ #
77
+ # @param [+Array+] events
78
+ # array of events to send (each shoud have name and optional measurement fields).
79
+ def record_events_array(events)
80
+ stats_cloud_instance.record_events_array(events)
81
+ end
82
+
57
83
  # Returns cluster status.
58
84
  #
59
85
  # @return [Hash]
60
86
  #
61
87
  # @api public
62
88
  def cluster_status
63
- StatsCloud::Client.instance.cluster_status
89
+ stats_cloud_instance.cluster_status
64
90
  rescue StandardError => error
65
91
  logger.error error
66
92
  end
@@ -71,9 +97,15 @@ module StatsCloud
71
97
  #
72
98
  # @api public
73
99
  def stop
74
- StatsCloud::Client.instance.stop
100
+ stats_cloud_instance.stop
75
101
  rescue StandardError => error
76
102
  logger.error error
77
103
  end
104
+
105
+ private
106
+
107
+ def stats_cloud_instance
108
+ StatsCloud::Client.instance
109
+ end
78
110
  end
79
111
  end
data/statscloud.gemspec CHANGED
@@ -33,15 +33,16 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ["lib"]
35
35
 
36
- spec.add_dependency "activesupport", ">= 5.0.0.1"
37
- spec.add_development_dependency "bundler", "~> 1.16"
36
+ spec.add_dependency "activesupport", "~> 5.2"
38
37
  spec.add_dependency "crc32", "~> 1.0.1"
39
38
  spec.add_dependency "eventmachine", "~> 1.2"
40
39
  spec.add_dependency "fileutils"
41
40
  spec.add_dependency "leon", "~> 1.1"
42
41
  spec.add_dependency "logger", "~> 1.2"
43
- spec.add_development_dependency "rake", "~> 10.0"
44
42
  spec.add_dependency "rest-client", "~> 2.0.2"
45
- spec.add_development_dependency "rspec", "~> 3.0"
46
43
  spec.add_dependency "statscloud.io-ruby-socket.io-client-simple", "~> 1.2.1.pre.3"
44
+
45
+ spec.add_development_dependency "bundler", "~> 1.16"
46
+ spec.add_development_dependency "rake", "~> 10.0"
47
+ spec.add_development_dependency "rspec", "~> 3.0"
47
48
  end
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statscloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Ovcharov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-03 00:00:00.000000000 Z
11
+ date: 2018-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 5.0.0.1
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 5.0.0.1
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '1.16'
34
- type: :development
19
+ version: '5.2'
20
+ type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '1.16'
26
+ version: '5.2'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: crc32
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -109,61 +95,75 @@ dependencies:
109
95
  - !ruby/object:Gem::Version
110
96
  version: '1.2'
111
97
  - !ruby/object:Gem::Dependency
112
- name: rake
98
+ name: rest-client
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: '10.0'
118
- type: :development
103
+ version: 2.0.2
104
+ type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: '10.0'
110
+ version: 2.0.2
125
111
  - !ruby/object:Gem::Dependency
126
- name: rest-client
112
+ name: statscloud.io-ruby-socket.io-client-simple
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: 2.0.2
117
+ version: 1.2.1.pre.3
132
118
  type: :runtime
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: 2.0.2
124
+ version: 1.2.1.pre.3
139
125
  - !ruby/object:Gem::Dependency
140
- name: rspec
126
+ name: bundler
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: '3.0'
131
+ version: '1.16'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: '3.0'
138
+ version: '1.16'
153
139
  - !ruby/object:Gem::Dependency
154
- name: statscloud.io-ruby-socket.io-client-simple
140
+ name: rake
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
143
  - - "~>"
158
144
  - !ruby/object:Gem::Version
159
- version: 1.2.1.pre.3
160
- type: :runtime
145
+ version: '10.0'
146
+ type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - "~>"
165
151
  - !ruby/object:Gem::Version
166
- version: 1.2.1.pre.3
152
+ version: '10.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.0'
167
167
  description: PaaS application monitoring system.
168
168
  email:
169
169
  - roman.o.as@agiliumlabs.com