seismograph 0.3.0 → 0.3.1

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