dogapi 1.11.0 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/CHANGELOG.md +4 -0
- data/lib/dogapi/event.rb +4 -2
- data/lib/dogapi/facade.rb +70 -1
- data/lib/dogapi/v1/event.rb +4 -2
- data/lib/dogapi/v1/monitor.rb +220 -0
- data/lib/dogapi/v1/service_check.rb +32 -0
- data/lib/dogapi/v1.rb +2 -0
- data/lib/dogapi/version.rb +1 -1
- data/spec/alerts_spec.rb +2 -2
- data/spec/facade_spec.rb +3 -3
- data/spec/support/cassettes/Alerts/create/returns_HTTP_code_200.yml +98 -0
- data/spec/support/cassettes/Alerts/create/returns_a_valid_event_ID.yml +84 -36
- data/spec/support/cassettes/Alerts/create/returns_the_same_query_as_sent.yml +84 -36
- data/spec/support/cassettes/Facade/Events/emits_aggregate_events.yml +161 -59
- data/spec/support/cassettes/Facade/Events/emits_events_and_retrieves_them.yml +85 -35
- data/spec/support/cassettes/Facade/Events/emits_events_with_specified_priority.yml +81 -30
- data/spec/support/cassettes/Facade/Tags/adds_updates_and_detaches_tags.yml +106 -90
- data/tests/test_alerts.rb +2 -2
- data/tests/test_monitors.rb +138 -0
- metadata +14 -9
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
M2JkNGNhMTI2N2Y4NDczNzU0NDYyZmI3NGQyNjU1MzBkMWQxNjhmMw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 95f3c9690e24cc9136fa52d7ca188a37330772f6
|
4
|
+
data.tar.gz: 2e214f8924413926d12ba4880d296b89d3eb0190
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
M2JmN2M2YmJhZDA0ODFkZDE2ZmE1YmMxM2YwZjQzNDUwOGRmNjk3OTRmZWM5
|
11
|
-
MGI5MjU1N2UxZjllMzUyNGM3M2QwZjczNzNhZWUwMjAzN2FlYTU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OTBkNTA4YTY5OWRjY2M0YmQ3MjMyZjUxYWM5MDcyODk3ZDcxNDhhZTY5ZGQ4
|
14
|
-
Mjg2MzI4MjhiNmU3YTQwNTAxMDY2YzA2NjE2ZDQxMmI1ZGQyZDZhM2FkNGZk
|
15
|
-
NDAzYjEyYWExZjQ3M2M5OWI0YzQ5NDQ1MjRkODFiOTk1YWM4ZDc=
|
6
|
+
metadata.gz: 84310c8ba834959fc039443a13792e17e51e65d9324914318eda49bef91cdd51fb1ad7121df30f69e782aa3cc154ebea95d3231c4dfadbb2345b0feac607c1aa
|
7
|
+
data.tar.gz: 55f84d609ad8db3a80a560d8ca977154b036a57be56c0597ef189bc8d62b95ec03b067ec86f12cdd895d1825b71c77236c358f4293c32284e4f5c7aa40c398c9
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
Changes
|
2
2
|
=======
|
3
|
+
# 1.12.0 / 2014-11-17
|
4
|
+
* Add support for the Monitor API [#51](https://github.com/DataDog/dogapi-rb/pull/51)
|
5
|
+
* Truncate event title and text before submission [#53](https://github.com/DataDog/dogapi-rb/pull/53)
|
6
|
+
|
3
7
|
# 1.11.0 / 2014-07-03
|
4
8
|
* Allow to send several metrics in the same http request
|
5
9
|
* Add support for http proxy defined by the environment variables
|
data/lib/dogapi/event.rb
CHANGED
@@ -63,6 +63,8 @@ module Dogapi
|
|
63
63
|
class EventService < Dogapi::Service
|
64
64
|
|
65
65
|
API_VERSION = "1.0.0"
|
66
|
+
MAX_BODY_LENGTH = 4000
|
67
|
+
MAX_TITLE_LENGTH = 100
|
66
68
|
|
67
69
|
# <b>DEPRECATED:</b> Going forward, use the V1 services. This legacy service will be
|
68
70
|
# removed in an upcoming release.
|
@@ -82,8 +84,8 @@ module Dogapi
|
|
82
84
|
:alert_type => event.alert_type,
|
83
85
|
:event_type => event.event_type,
|
84
86
|
:event_object => event.event_object,
|
85
|
-
:msg_title => event.msg_title,
|
86
|
-
:msg_text => event.msg_text,
|
87
|
+
:msg_title => event.msg_title[0..MAX_TITLE_LENGTH - 1],
|
88
|
+
:msg_text => event.msg_text[0..MAX_BODY_LENGTH - 1],
|
87
89
|
:json_payload => event.json_payload,
|
88
90
|
}
|
89
91
|
|
data/lib/dogapi/facade.rb
CHANGED
@@ -38,7 +38,8 @@ module Dogapi
|
|
38
38
|
@user_svc = Dogapi::V1::UserService.new(@api_key, @application_key, silent, timeout)
|
39
39
|
@snapshot_svc = Dogapi::V1::SnapshotService.new(@api_key, @application_key, silent, timeout)
|
40
40
|
@screenboard_svc = Dogapi::V1::ScreenboardService.new(@api_key, @application_key, silent, timeout)
|
41
|
-
|
41
|
+
@monitor_svc = Dogapi::V1::MonitorService.new(@api_key, @application_key, silent, timeout)
|
42
|
+
@service_check_svc = Dogapi::V1::ServiceCheckService.new(@api_key, @application_key, silent, timeout)
|
42
43
|
@legacy_event_svc = Dogapi::EventService.new(@datadog_host)
|
43
44
|
end
|
44
45
|
|
@@ -317,6 +318,74 @@ module Dogapi
|
|
317
318
|
@screenboard_svc.share_screenboard(board_id)
|
318
319
|
end
|
319
320
|
|
321
|
+
#
|
322
|
+
# MONITORS
|
323
|
+
#
|
324
|
+
|
325
|
+
def monitor(type, query, options = {})
|
326
|
+
@monitor_svc.monitor(type, query, options)
|
327
|
+
end
|
328
|
+
|
329
|
+
def update_monitor(monitor_id, query, options = {})
|
330
|
+
@monitor_svc.update_monitor(monitor_id, query, options)
|
331
|
+
end
|
332
|
+
|
333
|
+
def get_monitor(monitor_id, options = {})
|
334
|
+
@monitor_svc.get_monitor(monitor_id, options)
|
335
|
+
end
|
336
|
+
|
337
|
+
def delete_monitor(monitor_id)
|
338
|
+
@monitor_svc.delete_monitor(monitor_id)
|
339
|
+
end
|
340
|
+
|
341
|
+
def get_all_monitors(options = {})
|
342
|
+
@monitor_svc.get_all_monitors(options)
|
343
|
+
end
|
344
|
+
|
345
|
+
def mute_monitors()
|
346
|
+
@monitor_svc.mute_monitors()
|
347
|
+
end
|
348
|
+
|
349
|
+
def unmute_monitors()
|
350
|
+
@monitor_svc.unmute_monitors()
|
351
|
+
end
|
352
|
+
|
353
|
+
def mute_monitor(monitor_id, options = {})
|
354
|
+
@monitor_svc.mute_monitor(monitor_id, options)
|
355
|
+
end
|
356
|
+
|
357
|
+
def unmute_monitor(monitor_id, options = {})
|
358
|
+
@monitor_svc.unmute_monitor(monitor_id, options)
|
359
|
+
end
|
360
|
+
|
361
|
+
#
|
362
|
+
# MONITOR DOWNTIME
|
363
|
+
#
|
364
|
+
|
365
|
+
def schedule_downtime(scope, start, options = {})
|
366
|
+
@monitor_svc.schedule_downtime(scope, start, options)
|
367
|
+
end
|
368
|
+
|
369
|
+
def get_downtime(downtime_id)
|
370
|
+
@monitor_svc.get_downtime(downtime_id)
|
371
|
+
end
|
372
|
+
|
373
|
+
def cancel_downtime(downtime_id)
|
374
|
+
@monitor_svc.cancel_downtime(downtime_id)
|
375
|
+
end
|
376
|
+
|
377
|
+
def get_all_downtimes(options = {})
|
378
|
+
@monitor_svc.get_all_downtimes(options)
|
379
|
+
end
|
380
|
+
|
381
|
+
#
|
382
|
+
# SERVICE CHECKS
|
383
|
+
#
|
384
|
+
|
385
|
+
def service_check(check, host, status, options = {})
|
386
|
+
@service_check_svc.service_check(check, host, status, options)
|
387
|
+
end
|
388
|
+
|
320
389
|
private
|
321
390
|
|
322
391
|
def override_scope(options= {})
|
data/lib/dogapi/v1/event.rb
CHANGED
@@ -7,6 +7,8 @@ module Dogapi
|
|
7
7
|
class EventService < Dogapi::APIService
|
8
8
|
|
9
9
|
API_VERSION = "v1"
|
10
|
+
MAX_BODY_LENGTH = 4000
|
11
|
+
MAX_TITLE_LENGTH = 100
|
10
12
|
|
11
13
|
# Records an Event with no duration
|
12
14
|
def post(event, scope=nil)
|
@@ -17,8 +19,8 @@ module Dogapi
|
|
17
19
|
}
|
18
20
|
|
19
21
|
body = event.to_hash.merge({
|
20
|
-
:title => event.msg_title,
|
21
|
-
:text => event.msg_text,
|
22
|
+
:title => event.msg_title[0..MAX_TITLE_LENGTH - 1],
|
23
|
+
:text => event.msg_text[0..MAX_BODY_LENGTH - 1],
|
22
24
|
:date_happened => event.date_happened.to_i,
|
23
25
|
:host => scope.host,
|
24
26
|
:device => scope.device,
|
@@ -0,0 +1,220 @@
|
|
1
|
+
require 'dogapi'
|
2
|
+
|
3
|
+
module Dogapi
|
4
|
+
class V1 # for namespacing
|
5
|
+
|
6
|
+
class MonitorService < Dogapi::APIService
|
7
|
+
|
8
|
+
API_VERSION = 'v1'
|
9
|
+
|
10
|
+
def monitor(type, query, options = {})
|
11
|
+
begin
|
12
|
+
params = {
|
13
|
+
:api_key => @api_key,
|
14
|
+
:application_key => @application_key
|
15
|
+
}
|
16
|
+
|
17
|
+
body = {
|
18
|
+
'type' => type,
|
19
|
+
'query' => query,
|
20
|
+
}.merge options
|
21
|
+
|
22
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/monitor", params, body, true)
|
23
|
+
rescue Exception => e
|
24
|
+
suppress_error_if_silent e
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def update_monitor(monitor_id, query, options)
|
29
|
+
begin
|
30
|
+
params = {
|
31
|
+
:api_key => @api_key,
|
32
|
+
:application_key => @application_key
|
33
|
+
}
|
34
|
+
|
35
|
+
body = {
|
36
|
+
'query' => query,
|
37
|
+
}.merge options
|
38
|
+
|
39
|
+
request(Net::HTTP::Put, "/api/#{API_VERSION}/monitor/#{monitor_id}", params, body, true)
|
40
|
+
rescue Exception => e
|
41
|
+
suppress_error_if_silent e
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_monitor(monitor_id, options = {})
|
46
|
+
begin
|
47
|
+
params = {
|
48
|
+
:api_key => @api_key,
|
49
|
+
:application_key => @application_key
|
50
|
+
}
|
51
|
+
|
52
|
+
# :group_states is an optional list of statuses to filter returned
|
53
|
+
# groups. If no value is given then no group states will be returned.
|
54
|
+
# Possible values are: "all", "ok", "warn", "alert", "no data".
|
55
|
+
if options[:group_states]
|
56
|
+
params[:group_states] = options[:group_states].join(',')
|
57
|
+
options.delete :group_states
|
58
|
+
end
|
59
|
+
|
60
|
+
request(Net::HTTP::Get, "/api/#{API_VERSION}/monitor/#{monitor_id}", params, nil, false)
|
61
|
+
rescue Exception => e
|
62
|
+
suppress_error_if_silent e
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def delete_monitor(monitor_id)
|
67
|
+
begin
|
68
|
+
params = {
|
69
|
+
:api_key => @api_key,
|
70
|
+
:application_key => @application_key
|
71
|
+
}
|
72
|
+
|
73
|
+
request(Net::HTTP::Delete, "/api/#{API_VERSION}/monitor/#{monitor_id}", params, nil, false)
|
74
|
+
rescue Exception => e
|
75
|
+
suppress_error_if_silent e
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def get_all_monitors(options = {})
|
80
|
+
begin
|
81
|
+
params = {
|
82
|
+
:api_key => @api_key,
|
83
|
+
:application_key => @application_key
|
84
|
+
}
|
85
|
+
|
86
|
+
# :group_states is an optional list of statuses to filter returned
|
87
|
+
# groups. If no value is given then no group states will be returned.
|
88
|
+
# Possible values are: "all", "ok", "warn", "alert", "no data".
|
89
|
+
if options[:group_states]
|
90
|
+
params[:group_states] = options[:group_states].join(',')
|
91
|
+
options.delete :group_states
|
92
|
+
end
|
93
|
+
|
94
|
+
request(Net::HTTP::Get, "/api/#{API_VERSION}/monitor", params, nil, false)
|
95
|
+
rescue Exception => e
|
96
|
+
suppress_error_if_silent e
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def mute_monitors()
|
101
|
+
begin
|
102
|
+
params = {
|
103
|
+
:api_key => @api_key,
|
104
|
+
:application_key => @application_key
|
105
|
+
}
|
106
|
+
|
107
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/monitor/mute_all", params, nil, false)
|
108
|
+
rescue Exception => e
|
109
|
+
suppress_error_if_silent e
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def unmute_monitors()
|
114
|
+
begin
|
115
|
+
params = {
|
116
|
+
:api_key => @api_key,
|
117
|
+
:application_key => @application_key
|
118
|
+
}
|
119
|
+
|
120
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/monitor/unmute_all", params, nil, false)
|
121
|
+
rescue Exception => e
|
122
|
+
suppress_error_if_silent e
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def mute_monitor(monitor_id, options = {})
|
127
|
+
begin
|
128
|
+
params = {
|
129
|
+
:api_key => @api_key,
|
130
|
+
:application_key => @application_key
|
131
|
+
}
|
132
|
+
|
133
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/monitor/#{monitor_id}/mute", params, options, true)
|
134
|
+
rescue Exception => e
|
135
|
+
suppress_error_if_silent e
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def unmute_monitor(monitor_id, options = {})
|
140
|
+
begin
|
141
|
+
params = {
|
142
|
+
:api_key => @api_key,
|
143
|
+
:application_key => @application_key
|
144
|
+
}
|
145
|
+
|
146
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/monitor/#{monitor_id}/unmute", params, options, true)
|
147
|
+
rescue Exception => e
|
148
|
+
suppress_error_if_silent e
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
#
|
153
|
+
# DOWNTIMES
|
154
|
+
|
155
|
+
def schedule_downtime(scope, start, options = {})
|
156
|
+
begin
|
157
|
+
params = {
|
158
|
+
:api_key => @api_key,
|
159
|
+
:application_key => @application_key
|
160
|
+
}
|
161
|
+
|
162
|
+
body = {
|
163
|
+
'scope' => scope,
|
164
|
+
'start' => start
|
165
|
+
}.merge options
|
166
|
+
|
167
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/downtime", params, body, true)
|
168
|
+
rescue Exception => e
|
169
|
+
suppress_error_if_silent e
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def get_downtime(downtime_id)
|
174
|
+
begin
|
175
|
+
params = {
|
176
|
+
:api_key => @api_key,
|
177
|
+
:application_key => @application_key
|
178
|
+
}
|
179
|
+
|
180
|
+
request(Net::HTTP::Get, "/api/#{API_VERSION}/downtime/#{downtime_id}", params, nil, false)
|
181
|
+
rescue Exception => e
|
182
|
+
suppress_error_if_silent e
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
def cancel_downtime(downtime_id)
|
187
|
+
begin
|
188
|
+
params = {
|
189
|
+
:api_key => @api_key,
|
190
|
+
:application_key => @application_key
|
191
|
+
}
|
192
|
+
|
193
|
+
request(Net::HTTP::Delete, "/api/#{API_VERSION}/downtime/#{downtime_id}", params, nil, false)
|
194
|
+
rescue Exception => e
|
195
|
+
suppress_error_if_silent e
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
def get_all_downtimes(options = {})
|
200
|
+
begin
|
201
|
+
params = {
|
202
|
+
:api_key => @api_key,
|
203
|
+
:application_key => @application_key
|
204
|
+
}
|
205
|
+
|
206
|
+
if options[:current_only]
|
207
|
+
params[:current_only] = options[:current_only]
|
208
|
+
options.delete :current_only
|
209
|
+
end
|
210
|
+
|
211
|
+
request(Net::HTTP::Get, "/api/#{API_VERSION}/downtime", params, nil, false)
|
212
|
+
rescue Exception => e
|
213
|
+
suppress_error_if_silent e
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'dogapi'
|
2
|
+
|
3
|
+
module Dogapi
|
4
|
+
class V1
|
5
|
+
|
6
|
+
class ServiceCheckService < Dogapi::APIService
|
7
|
+
|
8
|
+
API_VERSION = 'v1'
|
9
|
+
|
10
|
+
def service_check(check, host, status, options = {})
|
11
|
+
begin
|
12
|
+
params = {
|
13
|
+
:api_key => @api_key,
|
14
|
+
:application_key => @application_key
|
15
|
+
}
|
16
|
+
|
17
|
+
body = {
|
18
|
+
'check' => check,
|
19
|
+
'host_name' => host,
|
20
|
+
'status' => status
|
21
|
+
}.merge options
|
22
|
+
|
23
|
+
request(Net::HTTP::Post, "/api/#{API_VERSION}/check_run", params, body, true)
|
24
|
+
rescue Exception => e
|
25
|
+
suppress_error_if_silent e
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/dogapi/v1.rb
CHANGED
data/lib/dogapi/version.rb
CHANGED
data/spec/alerts_spec.rb
CHANGED
@@ -17,8 +17,8 @@ describe "Alerts", :vcr => true do
|
|
17
17
|
@dog.delete_alert(@new_alert[1]['id'])
|
18
18
|
end
|
19
19
|
|
20
|
-
it "returns HTTP code
|
21
|
-
expect(@new_alert[0]).to eq '
|
20
|
+
it "returns HTTP code 200" do
|
21
|
+
expect(@new_alert[0]).to eq '200'
|
22
22
|
end
|
23
23
|
|
24
24
|
it "returns a valid event ID" do
|
data/spec/facade_spec.rb
CHANGED
@@ -103,7 +103,7 @@ describe "Facade", :vcr => true do
|
|
103
103
|
|
104
104
|
code, resp = @dog.emit_event(event)
|
105
105
|
now_event_id = resp["event"]["id"]
|
106
|
-
sleep
|
106
|
+
sleep 8
|
107
107
|
code, resp = @dog.get_event(now_event_id)
|
108
108
|
expect(resp['event']).not_to be_nil
|
109
109
|
expect(resp['event']['text']).to eq(now_message)
|
@@ -113,7 +113,7 @@ describe "Facade", :vcr => true do
|
|
113
113
|
event = Dogapi::Event.new('test message', :msg_title => 'title', :date_happened => Time.now(), :priority => "low")
|
114
114
|
code, resp = @dog.emit_event(event)
|
115
115
|
low_event_id = resp["event"]["id"]
|
116
|
-
sleep
|
116
|
+
sleep 8
|
117
117
|
code, resp = @dog.get_event(low_event_id)
|
118
118
|
expect(resp['event']).not_to be_nil
|
119
119
|
low_event = resp['event']
|
@@ -126,7 +126,7 @@ describe "Facade", :vcr => true do
|
|
126
126
|
first = resp["event"]["id"]
|
127
127
|
code, resp = @dog.emit_event(Dogapi::Event.new("Testing Aggregation (second)", :aggregation_key => now.to_i))
|
128
128
|
second = resp["event"]["id"]
|
129
|
-
sleep
|
129
|
+
sleep 8
|
130
130
|
code, resp = @dog.get_event(first)
|
131
131
|
expect(resp["event"]).not_to be_nil
|
132
132
|
code, resp = @dog.get_event(second)
|
@@ -0,0 +1,98 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://app.datadoghq.com/api/v1/alert?api_key=9775a026f1ca7d1c6c5af9d94d9595a4&application_key=87ce4a24b5553d2e482ea8a8500e71b8ad4554ff
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"query":"avg(last_10m):avg:test.metric.metric{host:test.metric.host}
|
9
|
+
> 5"}'
|
10
|
+
headers:
|
11
|
+
Accept-Encoding:
|
12
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
13
|
+
Accept:
|
14
|
+
- '*/*'
|
15
|
+
User-Agent:
|
16
|
+
- Ruby
|
17
|
+
Content-Type:
|
18
|
+
- application/json
|
19
|
+
response:
|
20
|
+
status:
|
21
|
+
code: 200
|
22
|
+
message: OK
|
23
|
+
headers:
|
24
|
+
Cache-Control:
|
25
|
+
- no-cache
|
26
|
+
Content-Type:
|
27
|
+
- application/json; charset=utf-8
|
28
|
+
Date:
|
29
|
+
- Mon, 17 Nov 2014 18:26:23 GMT
|
30
|
+
Pragma:
|
31
|
+
- no-cache
|
32
|
+
Server:
|
33
|
+
- gunicorn/19.1.0
|
34
|
+
Strict-Transport-Security:
|
35
|
+
- max-age=15724800;
|
36
|
+
Vary:
|
37
|
+
- Accept-Encoding
|
38
|
+
X-Dd-Version:
|
39
|
+
- 31.1883.245-0
|
40
|
+
Content-Length:
|
41
|
+
- '288'
|
42
|
+
Connection:
|
43
|
+
- keep-alive
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: '{"event_object":"d709ad144fa2ddcc5daa4f866747a991","notify_audit":true,"timeout_h":null,"silenced":{},"query":"avg(last_10m):avg:test.metric.metric{host:test.metric.host}
|
47
|
+
> 5","message":"","id":103961,"name":"**test.metric.metric** over **host:test.metric.host**
|
48
|
+
was **> 5** on average during the **last 10m**.","no_data_timeframe":false,"creator":3658,"notify_no_data":false,"renotify_interval":null,"state":"No
|
49
|
+
Data","escalation_message":""}'
|
50
|
+
http_version:
|
51
|
+
recorded_at: Mon, 17 Nov 2014 18:26:23 GMT
|
52
|
+
- request:
|
53
|
+
method: delete
|
54
|
+
uri: https://app.datadoghq.com/api/v1/alert/103961?api_key=9775a026f1ca7d1c6c5af9d94d9595a4&application_key=87ce4a24b5553d2e482ea8a8500e71b8ad4554ff
|
55
|
+
body:
|
56
|
+
encoding: US-ASCII
|
57
|
+
string: ''
|
58
|
+
headers:
|
59
|
+
Accept-Encoding:
|
60
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
61
|
+
Accept:
|
62
|
+
- '*/*'
|
63
|
+
User-Agent:
|
64
|
+
- Ruby
|
65
|
+
response:
|
66
|
+
status:
|
67
|
+
code: 200
|
68
|
+
message: OK
|
69
|
+
headers:
|
70
|
+
Cache-Control:
|
71
|
+
- no-cache
|
72
|
+
Content-Type:
|
73
|
+
- application/json; charset=utf-8
|
74
|
+
Date:
|
75
|
+
- Mon, 17 Nov 2014 18:26:23 GMT
|
76
|
+
Pragma:
|
77
|
+
- no-cache
|
78
|
+
Server:
|
79
|
+
- gunicorn/19.1.0
|
80
|
+
Strict-Transport-Security:
|
81
|
+
- max-age=15724800;
|
82
|
+
Vary:
|
83
|
+
- Accept-Encoding
|
84
|
+
X-Dd-Version:
|
85
|
+
- 31.1883.245-0
|
86
|
+
Content-Length:
|
87
|
+
- '279'
|
88
|
+
Connection:
|
89
|
+
- keep-alive
|
90
|
+
body:
|
91
|
+
encoding: UTF-8
|
92
|
+
string: '{"event_object":"d709ad144fa2ddcc5daa4f866747a991","notify_audit":true,"timeout_h":null,"silenced":{},"query":"avg(last_10m):avg:test.metric.metric{host:test.metric.host}
|
93
|
+
> 5","message":"","name":"**test.metric.metric** over **host:test.metric.host**
|
94
|
+
was **> 5** on average during the **last 10m**.","no_data_timeframe":false,"creator":3658,"notify_no_data":false,"renotify_interval":null,"state":"No
|
95
|
+
Data","escalation_message":""}'
|
96
|
+
http_version:
|
97
|
+
recorded_at: Mon, 17 Nov 2014 18:26:23 GMT
|
98
|
+
recorded_with: VCR 2.9.3
|