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 +4 -4
- data/README.md +35 -0
- data/circle.yml +1 -1
- data/lib/seismograph/gateway.rb +6 -4
- data/lib/seismograph/log.rb +6 -4
- data/lib/seismograph/sensor.rb +10 -0
- data/lib/seismograph/version.rb +1 -1
- data/seismograph.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5743575f4bdb4b9dd9f7ca25482606de38502d3
|
4
|
+
data.tar.gz: b47eab1c3fc019430a334e128412b705398ba7de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/lib/seismograph/gateway.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
9
|
-
|
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
|
data/lib/seismograph/log.rb
CHANGED
@@ -6,10 +6,12 @@ module Seismograph
|
|
6
6
|
include Parameterize
|
7
7
|
|
8
8
|
[:info, :error, :warning, :success].each do |alert_type|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
data/lib/seismograph/sensor.rb
CHANGED
@@ -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 = {})
|
data/lib/seismograph/version.rb
CHANGED
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.
|
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.
|
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:
|
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.
|
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.
|
55
|
+
version: 1.11.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rake
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|