dogcatcher 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDJlNGE0ZDAzYTUwMmU4Yjk2ODZhM2MzMmExNDIyNzAwZTUwZTE2NA==
4
+ MDRmOTVkOGFmMTM2OWU3Mzc2MzY4ZjhlM2Q5YzY4ZDc2NDk4ZWI2ZQ==
5
5
  data.tar.gz: !binary |-
6
- MmYyYTM5NTE2ZmJmOWIxNTk5OTAzM2M4NTcxMjdlYzhmZmEyNGVlZQ==
6
+ ZTg4NTgyNWM5NGI0OTliZDE5NTUwNzc2MDMwOTNhNDFiNzQ2NDkzZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWRiMTg1NDM4MjAyZmUxN2ZiYjkzNzA1NjM4MzAzZmU5OTI3NGQwOTFhNTIy
10
- ZDMxZTBkYmMwYjAyZWI0NjM4MDY2MDRhODllOGFmNDM1NzYxNmIzZDE0ZGEx
11
- ZjEyZTY3NWUyNDIyOWRhNjU1MDM1NDRhZDljZDM0NmU5ZWY3MTc=
9
+ NzRjODRlOTc5NDJhOGYyMThkOWI3ZWRhNDNmMjQzMWY5OWE0MDQ1ZTI5YzZl
10
+ MzQwZWRkMzFlNmRhNzZlMDA2Mjc0NTI4Mjc2MzE2N2RiYTQxNzcwZjA5Y2Vj
11
+ M2IwMGVhNzU5M2MzMjFlN2IyNGQzM2NiYzAwYmJkN2ZmNjAzNmQ=
12
12
  data.tar.gz: !binary |-
13
- YzFlZmUyMTUxYWYwNWViOTRjOTNjZTAyYTQ1ZjU2OGY4ZjI4YzE0ZDMwZWI5
14
- OTZjYjEyNzgyNGI2YzBlMzY5NGQzNzQwMDkwNzVlODliMTMxNjc0ZTBiY2Q1
15
- YTdhODBmNmViZGI3NTQ4NTk2Yjk0NzcxNzU3ZTRlZWE4NTEwNmE=
13
+ MjVkODgzZTlkN2NhY2RkOTY2ZTVkNTdlZGIxNDI4YzMyNmMxYTc3MTk4M2Nh
14
+ Yzg3MTk3YzYxYzY3ZDZkNDBhMjRjNDQ0OTRmNDUzNmQ3ZDg5YTM4OGQ1MmM4
15
+ ZWE4MjZhZTU3MGU0OGY3ZjJmMTYyNDFlZDExMjBiNDI5Y2RlZWY=
data/README.md CHANGED
@@ -56,9 +56,9 @@ end
56
56
 
57
57
  ## Configuration
58
58
 
59
- By default Dogcatcher will send events to statsd running on the local host. By
60
- specifying a Datadog API key, Dogcatcher will switch to sending events to the
61
- Datadog API instead.
59
+ By default Dogcatcher will send metric and event data to statsd running on the
60
+ local host. By specifying a Datadog API key, Dogcatcher will switch to sending
61
+ events to the Datadog API instead.
62
62
 
63
63
  ```ruby
64
64
  Dogcatcher.configure do |c|
@@ -66,8 +66,8 @@ Dogcatcher.configure do |c|
66
66
  end
67
67
  ```
68
68
 
69
- Since the default approach is to send events to one or the other, options are
70
- available to explicitly control where the events are sent.
69
+ Since the default approach is to send data to one or the other, options are
70
+ available to explicitly control where the data is sent.
71
71
 
72
72
  ```ruby
73
73
  Dogcatcher.configure do |c|
@@ -76,7 +76,26 @@ Dogcatcher.configure do |c|
76
76
  end
77
77
  ```
78
78
 
79
- The host and port that statsd events are sent to can be configured like so.
79
+ By default Dogcatcher will send both metrics and events, but these can be
80
+ disabled individually.
81
+
82
+ ```ruby
83
+ Dogcatcher.configure do |c|
84
+ c.send_metric = false
85
+ c.send_event = false
86
+ end
87
+ ```
88
+
89
+ Metrics will be sent with a default name of `dogcatcher.errors.count`, this can
90
+ be customized by setting the `metric_name` configurable.
91
+
92
+ ```ruby
93
+ Dogcatcher.configure do |c|
94
+ c.metric_name = 'my_app.errors.count'
95
+ end
96
+ ```
97
+
98
+ The host and port that statsd data is sent to can be configured like so.
80
99
 
81
100
  ```ruby
82
101
  Dogcatcher.configure do |c|
@@ -86,7 +105,7 @@ end
86
105
  ```
87
106
 
88
107
  An optional program name can be specified to help distinguish between multiple
89
- applications. This will appear in the event title.
108
+ applications. This will appear in the event title and as a tag on the metric.
90
109
 
91
110
  ```ruby
92
111
  Dogcatcher.configure do |c|
@@ -116,7 +135,7 @@ Dogcatcher.configure do |c|
116
135
  end
117
136
  ```
118
137
 
119
- Custom tags can be sent with exception events by adding them to the config.
138
+ Custom tags can be sent with exception data by adding them to the config.
120
139
 
121
140
  ```ruby
122
141
  Dogcatcher.configure do |c|
@@ -23,6 +23,14 @@ module Dogcatcher
23
23
  attr_accessor :use_dogapi
24
24
  attr_accessor :use_statsd
25
25
 
26
+ # When true, a metric will be sent via the enabled method.
27
+ attr_accessor :send_metric
28
+ # When true, an event will be sent via the enabled method.
29
+ attr_accessor :send_event
30
+
31
+ # Name of the metric that will be sent
32
+ attr_accessor :metric_name
33
+
26
34
  # When enabled it will add tags for each +gem_name:version+ found in the
27
35
  # backtrace.
28
36
  #
@@ -37,12 +45,17 @@ module Dogcatcher
37
45
  # Custom tags to send with exception events
38
46
  attr_accessor :custom_tags
39
47
 
48
+ DEFAULT_METRIC_NAME = 'dogcatcher.errors.count'
49
+
40
50
  def initialize
41
51
  @statsd_host = '127.0.0.1'
42
52
  @statsd_port = 8125
43
53
  @gem_tags = true
44
54
  @backtrace_cleaner = ActiveSupport::BacktraceCleaner.new
45
55
  @custom_tags = []
56
+ @send_metric = true
57
+ @send_event = true
58
+ @metric_name = DEFAULT_METRIC_NAME
46
59
  end
47
60
 
48
61
  # Adds a backtrace filter. The given line in the backtrace will be replaced
@@ -10,29 +10,51 @@ module Dogcatcher
10
10
  #
11
11
  # @param [Dogcatcher::Notice]
12
12
  def notify(notice)
13
- notify_dogapi(notice) if @config.use_dogapi?
14
- notify_statsd(notice) if @config.use_statsd?
13
+ if @config.use_dogapi?
14
+ notify_dogapi_event(notice) if @config.send_event
15
+ notify_dogapi_metric(notice) if @config.send_metric
16
+ end
17
+ if @config.use_statsd?
18
+ notify_statsd_event(notice) if @config.send_event
19
+ notify_statsd_metric(notice) if @config.send_metric
20
+ end
15
21
  end
16
22
 
17
23
  private
18
24
 
25
+ def dogapi_client
26
+ @dogapi_client ||= Dogapi::Client.new(@config.api_key)
27
+ end
28
+
29
+ def statsd_client
30
+ @statsd_client = Statsd.new(@config.statsd_host, @config.statsd_port)
31
+ end
32
+
19
33
  # @param [Dogcatcher::Notice]
20
- def notify_dogapi(notice)
34
+ def notify_dogapi_event(notice)
21
35
  event = Dogapi::Event.new(notice.message,
22
36
  msg_title: notice.title,
23
37
  tags: notice.tags,
24
38
  alert_type: 'error')
39
+ dogapi_client.emit_event(event)
40
+ end
25
41
 
26
- Dogapi::Client.new(@config.api_key).emit_event(event)
42
+ # @param [Dogcatcher::Notice]
43
+ def notify_dogapi_metric(notice)
44
+ dogapi_client.emit_point(@config.metric_name, 1, tags: notice.tags)
45
+ end
46
+
47
+ # @param [Dogcatcher::Notice]
48
+ def notify_statsd_event(notice)
49
+ statsd_client.event(notice.title,
50
+ notice.message,
51
+ tags: notice.tags,
52
+ alert_type: 'error')
27
53
  end
28
54
 
29
55
  # @param [Dogcatcher::Notice]
30
- def notify_statsd(notice)
31
- client = Statsd.new(@config.statsd_host, @config.statsd_port)
32
- client.event(notice.title,
33
- notice.message,
34
- tags: notice.tags,
35
- alert_type: 'error')
56
+ def notify_statsd_metric(notice)
57
+ statsd_client.count(@config.metric_name, 1, tags: notice.tags)
36
58
  end
37
59
  end
38
60
  end
@@ -1,3 +1,3 @@
1
1
  module Dogcatcher
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dogcatcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Vidulich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-11 00:00:00.000000000 Z
11
+ date: 2016-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler