seismograph 0.3.0 → 0.3.1

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: 56e91905b4b222e1e0c31c603a79f30d74abe237
4
- data.tar.gz: dd10317f3aeb103d6d1816f0321cfe52d5ef0480
3
+ metadata.gz: e5743575f4bdb4b9dd9f7ca25482606de38502d3
4
+ data.tar.gz: b47eab1c3fc019430a334e128412b705398ba7de
5
5
  SHA512:
6
- metadata.gz: a692a017eff498426e72e92d616c27b8631fa30e89133f29c2476c8219874faccc7dc5536e354c353d6772a1ce4638daf872a7039920876eb190709cf6f9a91b
7
- data.tar.gz: 471321f5a40efa733ccf3b3175bffa77ea65819cef7ba84107d407034cde76f76b7ef6ef1cb2d317ed0ff547d1f1e81d455c5cd436e5ae410e6905de3c92f2ff
6
+ metadata.gz: 9e8c3d4f2026fd9b0059d2dc122140d4c38ad41ad601d82421b6828fa143c78a461527b5686b01f41954e78b6c51be072753a6fd851a2a76062bcc722777e217
7
+ data.tar.gz: 6b1abff70f44c56dc656d55c5b8d76ac123269a4e3efb163ad256d6c01312c96ae80c3f41aedc208a8641a627c6f07d85891d98b114179437a7d092a8d387fde
data/README.md CHANGED
@@ -77,6 +77,32 @@ def create
77
77
  end
78
78
  ```
79
79
 
80
+ ### Timing:
81
+
82
+ Timing is useful for tracking how long an operation takes, when that operation
83
+ has already been run. For example, in the subscriber to an
84
+ `ActiveSupport::Instrumentation` event. Expects the duration argument to be in
85
+ ms (which the ActiveSupport event.duration already is).
86
+
87
+ ```ruby
88
+ class ActiveJobSubscriber < ActiveSupport::Subscriber
89
+
90
+ attach_to :active_job
91
+
92
+ def perform(event)
93
+ job = event.payload[:job]
94
+ tags = ["jobs:#{job.name}", "queue:#{job.queue_name}"]
95
+
96
+ sensor.timing "perform", event.duration, sample_rate: 0.5, tags: tags
97
+ end
98
+
99
+ def sensor
100
+ @sensor ||= Seismograph::Sensor.new("active_job")
101
+ end
102
+
103
+ end
104
+ ```
105
+
80
106
  ### Incrementing/Decrementing:
81
107
 
82
108
  Simple incrementing and decrementing can be performed on a stat. Both methods accept a numeric
@@ -87,6 +113,15 @@ sensor.increment('memberships')
87
113
  sensor.decrement('memberships', 2)
88
114
  ```
89
115
 
116
+ ### Gauge:
117
+
118
+ Gauge is meant for static numbers that you want to track over time (as opposed to a rate for which
119
+ you would use `#count`).
120
+
121
+ ```ruby
122
+ sensor.gauge('collection_count', Collection.count)
123
+ ```
124
+
90
125
  ### Logging events:
91
126
 
92
127
  Logging can be used for tracking critical events. Valid log methods are `info`, `warning`,
data/circle.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  dependencies:
2
2
  pre:
3
- - gem install bundler -v 1.10.6
3
+ - gem install bundler -v 1.11.2
@@ -3,10 +3,12 @@ require 'statsd'
3
3
  module Seismograph
4
4
  module Gateway
5
5
  class << self
6
- [:histogram, :increment, :decrement, :time, :event].each do |method|
7
- define_method(method) do |*args, &block|
8
- client.send(method, *args, &block)
9
- end
6
+ [:histogram, :increment, :decrement, :time, :timing, :event, :gauge].each do |method|
7
+ class_eval <<-RUBY, __FILE__, __LINE__+1
8
+ def #{method}(*a, &b)
9
+ client.send(:#{method}, *a, &b)
10
+ end
11
+ RUBY
10
12
  end
11
13
 
12
14
  private
@@ -6,10 +6,12 @@ module Seismograph
6
6
  include Parameterize
7
7
 
8
8
  [:info, :error, :warning, :success].each do |alert_type|
9
- define_method alert_type do |message, params = {}|
10
- description = params.delete(:description) || ''
11
- log(message, description, params.merge(alert_type: alert_type.to_s))
12
- end
9
+ class_eval <<-RUBY, __FILE__, __LINE__+1
10
+ def #{alert_type}(message, params = {})
11
+ description = params.delete(:description) || ''
12
+ log(message, description, params.merge(alert_type: "#{alert_type}"))
13
+ end
14
+ RUBY
13
15
  end
14
16
 
15
17
  private
@@ -23,12 +23,22 @@ module Seismograph
23
23
  Gateway.decrement(stat(description), gateway_params(params))
24
24
  end
25
25
 
26
+ # Record the time (in ms) when the code has already been executed. Useful for
27
+ # ActiveSupport::Instrumentation event.duration (which is already in ms)
28
+ def timing(description, duration, params = {})
29
+ Gateway.timing(stat(description), duration, gateway_params(params))
30
+ end
31
+
26
32
  def benchmark(description, params = {}, &block)
27
33
  with_success_and_failure(description, params) do
28
34
  Gateway.time(stat(description), gateway_params(params), &block)
29
35
  end
30
36
  end
31
37
 
38
+ def gauge(description, value, params = {})
39
+ Gateway.gauge(stat(description), value, gateway_params(params))
40
+ end
41
+
32
42
  private
33
43
 
34
44
  def track(description, amount, params = {})
@@ -1,3 +1,3 @@
1
1
  module Seismograph
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
data/seismograph.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency 'dogstatsd-ruby', '~> 1.5'
22
22
 
23
23
  spec.add_development_dependency 'pry-nav'
24
- spec.add_development_dependency 'bundler', '~> 1.10.0'
24
+ spec.add_development_dependency 'bundler', '~> 1.11.0'
25
25
  spec.add_development_dependency 'rake', '~> 10.0'
26
26
  spec.add_development_dependency 'rspec', '~> 3.2'
27
27
  spec.add_development_dependency 'rspec-its', '~> 1.2'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seismograph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Croft
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-08 00:00:00.000000000 Z
12
+ date: 2016-01-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dogstatsd-ruby
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 1.10.0
48
+ version: 1.11.0
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 1.10.0
55
+ version: 1.11.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement