telemetry 1.3.1 → 1.3.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: 0173be3fb9501e7a0615bd6262d7143e122e6fad
4
- data.tar.gz: 336346801dda08cba3f76b42b808b6979fded36f
3
+ metadata.gz: 45ea2abcafe731aecd8eae54d263934874d88bb8
4
+ data.tar.gz: 657e9dbfd677fdfae1d90cfeb31c9bccbd3b0c4a
5
5
  SHA512:
6
- metadata.gz: df962f26f35757390db07ca10b994ce234aac2822df087708dfad849b82f689dcc81826a173f66abe53b062fb80b4d025d059c837cbd6ea447da647074552f4f
7
- data.tar.gz: bdadffa5f7e62aeee5a51630b61e2cae8eb2dae6b56a797e7f8c037c1cffd0f71f3ab7e0f49ed27807064bad3bb8e5fb3022923ea75a15f76ddd2fb1e9ca75d1
6
+ metadata.gz: 91502bed54b2ce5004539adb8377f68750b2c8843817589ef7e79187275f82d9163e786572597aabec44f643b5d1dd8733ad949a5d369c5c0ac1c5db54a46913
7
+ data.tar.gz: 09d06b7e9ea6dda84f1ab49a21ab219f072f786dbf1facb3406126fd1f9c035d436f5b4fab79b4928b0c717ed1bad49ad62d481b875dd68327eba51bc6128036
data/README.md CHANGED
@@ -130,7 +130,23 @@ An example of code to do this would be:
130
130
  flow = Telemetry::Value.new(tag: "test-flow-value", value: 3434)
131
131
  Telemetry::Api.affiliate_send("affiliate-identifier", flow)
132
132
 
133
- For more information see the [affiliate documentation](https://admin.telemetryapp.com/documentation/affiliates).
133
+ For more information see the [affiliate documentation](https://admin.telemetryapp.com/user/documentation/affiliates).
134
+
135
+ ## Aggregations
136
+
137
+ This gem supports the aggregations API interface. Aggregations allow you to send data point by point and have Telemetry aggregate the data for you. The gem supports the following methods:
138
+
139
+ - Telemetry::Api.aggregate(bucket, value)
140
+ - Telemetry::Api.aggregate_set_interval(bucket, interval, values)
141
+
142
+ An example of code to do this would be:
143
+
144
+ require 'telemetry'
145
+
146
+ Telemetry.token = "test-api-token"
147
+ Telemetry::Api.aggregate("my-bucket", 23124)
148
+
149
+ For more infromation see the [aggregations documentation](https://admin.telemetryapp.com/user/documentation/aggregations)
134
150
 
135
151
  ## Daemon
136
152
 
data/bin/telemetryd CHANGED
@@ -18,6 +18,9 @@ runner.with_options do |opts|
18
18
  opts.on("-o", "--once", "Run once") do |o|
19
19
  options[:once] = o
20
20
  end
21
+ opts.on("-l", "--logfile PATH", "Log to a logfile") do |l|
22
+ options[:logfile] = l
23
+ end
21
24
  end
22
25
 
23
26
  runner.execute do |opts|
@@ -33,6 +36,9 @@ runner.execute do |opts|
33
36
  exit
34
37
  end
35
38
 
39
+ Telemetry::logfile = opts[:logfile] if opts[:logfile]
40
+ Telemetry::logger.info "Starting telemetryd"
41
+
36
42
  # Loop Forever
37
43
  loop do
38
44
  start_timestamp = Time.now.to_f
@@ -50,12 +56,15 @@ runner.execute do |opts|
50
56
  sleep 3600
51
57
 
52
58
  rescue Telemetry::AuthenticationFailed => e
59
+ Telemetry::logger.error "Authentication Failed, Exiting"
53
60
  raise e
54
61
 
55
62
  rescue Telemetry::AuthorizationError => e
63
+ Telemetry::logger.error "Authorization Failed, Exiting"
56
64
  raise e
57
65
 
58
66
  rescue Telemetry::FormatError => e
67
+ Telemetry::logger.error "Format Error, Exiting"
59
68
  raise e
60
69
 
61
70
  rescue Exception => e
data/lib/telemetry/api.rb CHANGED
@@ -31,6 +31,11 @@ module Telemetry
31
31
  @api_host
32
32
  end
33
33
 
34
+ def self.logfile=(logfile)
35
+ @logger = Logger.new(logfile)
36
+ @logger.level = Logger::INFO
37
+ end
38
+
34
39
  def self.logger=(logger)
35
40
  @logger = logger
36
41
  end
@@ -41,9 +46,9 @@ module Telemetry
41
46
  if ENV['RACK_ENV'] == 'development'
42
47
  @logger.level = Logger::DEBUG
43
48
  else
44
- @logger.level = Logger::WARN
49
+ @logger.level = Logger::INFO
45
50
  end
46
- end
51
+ end
47
52
  @logger
48
53
  end
49
54
 
@@ -85,6 +90,16 @@ module Telemetry
85
90
  Telemetry::Api.send(:delete, "/flows/#{id}/data")
86
91
  end
87
92
 
93
+ def self.aggregate(bucket, value)
94
+ raise Telemetry::AuthenticationFailed, "Please set your Telemetry.token" unless Telemetry.token
95
+ return Telemetry::Api.send(:post, "/aggregations/#{bucket}", {:value => value})
96
+ end
97
+
98
+ def self.aggregate_set_interval(bucket, interval, values)
99
+ raise Telemetry::AuthenticationFailed, "Please set your Telemetry.token" unless Telemetry.token
100
+ return Telemetry::Api.send(:put, "/aggregations/#{bucket}/interval/#{interval}", {:value => value})
101
+ end
102
+
88
103
  def self.channel_send_batch(channel_tag, flows)
89
104
  raise Telemetry::AuthenticationFailed, "Please set your Telemetry.token" unless Telemetry.token
90
105
  raise RuntimeError, "Must supply flows to send" unless flows
@@ -190,11 +205,15 @@ module Telemetry
190
205
 
191
206
  case response.code
192
207
  when "200"
193
- Telemetry::logger.debug response.body
194
- return MultiJson.load(response.body)
208
+ rj = MultiJson.load(response.body)
209
+ Telemetry::logger.info "Updated: #{rj['updated'].join(', ')}" if rj && rj['updated'] && rj['updated'].count > 0
210
+ Telemetry::logger.info "Skipped: #{rj['skipped'].join(', ')}" if rj && rj['skipped'] && rj['skipped'].count > 0
211
+ return rj
195
212
  when "201"
196
- Telemetry::logger.debug response.body
197
- return MultiJson.load(response.body)
213
+ rj = MultiJson.load(response.body)
214
+ Telemetry::logger.info "Updated: #{rj['updated'].join(', ')}" if rj && rj['updated'] && rj['updated'].count > 0
215
+ Telemetry::logger.info "Skipped: #{rj['skipped'].join(', ')}" if rj && rj['skipped'] && rj['skipped'].count > 0
216
+ return rj
198
217
  when "204"
199
218
  return "No Body"
200
219
  when "400"
@@ -1,3 +1,3 @@
1
1
  module Telemetry
2
- TELEMETRY_VERSION = "1.3.1"
2
+ TELEMETRY_VERSION = "1.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telemetry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - W. Gersham Meharg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-04 00:00:00.000000000 Z
11
+ date: 2014-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj