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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +14 -3
- data/lib/statscloud/cluster_client.rb +1 -1
- data/lib/statscloud/helpers/assets_helper.rb +3 -0
- data/lib/statscloud/helpers/statscloud_helper.rb +1 -0
- data/lib/statscloud/statscloud_client.rb +33 -0
- data/lib/statscloud/statsmeter_client.rb +4 -0
- data/lib/statscloud/version.rb +1 -1
- data/lib/statscloud.rb +38 -6
- data/statscloud.gemspec +5 -4
- metadata +33 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71d82d6becb4a48006bf0eed5eca4a1d99f9ea643b9d29d2d6f067e69ad85f80
|
4
|
+
data.tar.gz: 46516bb9c8bf1abb58ec5432c90737d0938f660c89088e00c01a432cfe682a64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cb1317f0a0d53d8bbf5ab8a4ab6ec27b4ebb6a94e6cba5d413baaf4bc2e40ffcf7a7bbc06743c8f1b89d5855a9b0ffc26bd2283e1f0d4365b4085a95d08d994
|
7
|
+
data.tar.gz: be1ccc9c5ac51dc08befc6361e45ee52c8e6cc9e91dcdb1a2b04860131bbbd1656f6597e269ceb4c5aaab206b41d69f872a166f2defc82e9b95ac3077cfc9562
|
data/Gemfile.lock
CHANGED
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
|
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.
|
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
|
@@ -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
|
|
data/lib/statscloud/version.rb
CHANGED
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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", "
|
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.
|
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-
|
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: '
|
34
|
-
type: :
|
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: '
|
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:
|
98
|
+
name: rest-client
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
type: :
|
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:
|
110
|
+
version: 2.0.2
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
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.
|
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.
|
124
|
+
version: 1.2.1.pre.3
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
126
|
+
name: bundler
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
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: '
|
138
|
+
version: '1.16'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
140
|
+
name: rake
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - "~>"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
160
|
-
type: :
|
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:
|
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
|