statscloud 1.0.5 → 1.0.6

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
  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