chef-handler-datadog 0.1.0 → 0.1.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.
- data/lib/chef-handler-datadog.rb +1 -1
- data/lib/chef/handler/datadog.rb +42 -10
- metadata +117 -120
data/lib/chef-handler-datadog.rb
CHANGED
data/lib/chef/handler/datadog.rb
CHANGED
@@ -30,6 +30,7 @@ class Chef
|
|
30
30
|
@dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => hostname)
|
31
31
|
@dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => hostname)
|
32
32
|
@dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => hostname)
|
33
|
+
Chef::Log.debug("Submitted chef metrics back to Datadog")
|
33
34
|
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
34
35
|
Chef::Log.error("Could not send metrics to Datadog. Connection error:\n" + e)
|
35
36
|
end
|
@@ -63,17 +64,34 @@ class Chef
|
|
63
64
|
# Submit the details back to Datadog
|
64
65
|
begin
|
65
66
|
# Send the Event data
|
66
|
-
@dog.emit_event(Dogapi::Event.new(event_data,
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
67
|
+
evt = @dog.emit_event(Dogapi::Event.new(event_data,
|
68
|
+
:msg_title => event_title,
|
69
|
+
:event_type => 'config_management.run',
|
70
|
+
:event_object => hostname,
|
71
|
+
:alert_type => alert_type,
|
72
|
+
:priority => event_priority,
|
73
|
+
:source_type_name => 'chef'
|
74
|
+
), :host => hostname)
|
75
|
+
begin
|
76
|
+
# FIXME nice-to-have: abstract format of return value away a bit
|
77
|
+
# in dogapi directly. See https://github.com/DataDog/dogapi-rb/issues/18
|
78
|
+
if evt.length < 2
|
79
|
+
Chef::Log.warn("Unexpected response from Datadog Event API: #{evt}")
|
80
|
+
else
|
81
|
+
# [http_response_code, {"event" => {"url" => "...", ...}}]
|
82
|
+
# 2xx means ok
|
83
|
+
if evt[0].to_i / 100 != 2
|
84
|
+
Chef::Log.warn("Could not submit event to Datadog (HTTP call failed): #{evt[0]}")
|
85
|
+
else
|
86
|
+
Chef::Log.debug("Successfully submitted Chef event to Datadog for #{hostname} at #{evt[1]['event']['url']}")
|
87
|
+
end
|
88
|
+
end
|
89
|
+
rescue
|
90
|
+
Chef::Log.warn("Could not determine whether chef run was successfully submitted to Datadog: #{evt}")
|
91
|
+
end
|
74
92
|
|
75
93
|
# Get the current list of tags, remove any "role:" entries
|
76
|
-
host_tags = @dog.host_tags(
|
94
|
+
host_tags = @dog.host_tags(hostname)[1]["tags"] || []
|
77
95
|
host_tags.delete_if {|tag| tag.start_with?('role:') }
|
78
96
|
|
79
97
|
# Get list of chef roles, rename them to tag format
|
@@ -90,7 +108,21 @@ class Chef
|
|
90
108
|
new_host_tags = host_tags | chef_roles
|
91
109
|
|
92
110
|
# Replace all tags with the new tags
|
93
|
-
@dog.update_tags(
|
111
|
+
rc = @dog.update_tags(hostname, new_host_tags)
|
112
|
+
begin
|
113
|
+
# See FIXME above about why I feel dirty repeating this code here
|
114
|
+
if evt.length < 2
|
115
|
+
Chef::Log.warn("Unexpected response from Datadog Event API: #{evt}")
|
116
|
+
else
|
117
|
+
if rc[0].to_i / 100 != 2
|
118
|
+
Chef::Log.warn("Could not submit #{chef_roles} tags for #{hostname} to Datadog")
|
119
|
+
else
|
120
|
+
Chef::Log.debug("Successfully updated #{hostname}'s tags to #{new_host_tags.join(', ')}")
|
121
|
+
end
|
122
|
+
end
|
123
|
+
rescue
|
124
|
+
Chef::Log.warn("Could not determine whether #{hostname}'s tags were successfully submitted to Datadog: #{rc}")
|
125
|
+
end
|
94
126
|
|
95
127
|
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
96
128
|
Chef::Log.error("Could not connect to Datadog. Connection error:\n" + e)
|
metadata
CHANGED
@@ -1,135 +1,140 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-handler-datadog
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 0.1.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Mike Fiedler
|
14
9
|
- Adam Jacob
|
15
10
|
- Alexis Le-Quoc
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
14
|
+
date: 2012-09-27 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: chef
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
24
19
|
none: false
|
25
|
-
requirements:
|
20
|
+
requirements:
|
26
21
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 10
|
31
|
-
- 12
|
32
|
-
version: "10.12"
|
33
|
-
prerelease: false
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '10.12'
|
34
24
|
type: :runtime
|
35
|
-
name: chef
|
36
|
-
requirement: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 11
|
44
|
-
segments:
|
45
|
-
- 1
|
46
|
-
- 2
|
47
|
-
version: "1.2"
|
48
25
|
prerelease: false
|
49
|
-
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ~>
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '10.12'
|
32
|
+
- !ruby/object:Gem::Dependency
|
50
33
|
name: dogapi
|
51
|
-
requirement:
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
54
35
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
|
60
|
-
- 0
|
61
|
-
version: "0"
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.2'
|
40
|
+
type: :runtime
|
62
41
|
prerelease: false
|
63
|
-
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.2'
|
48
|
+
- !ruby/object:Gem::Dependency
|
64
49
|
name: rake
|
65
|
-
requirement:
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
68
51
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
76
|
-
prerelease: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
77
56
|
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
78
65
|
name: shoulda
|
79
|
-
requirement:
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
82
67
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
90
|
-
prerelease: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
91
72
|
type: :development
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
- !ruby/object:Gem::Dependency
|
92
81
|
name: bundler
|
93
|
-
requirement:
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
96
83
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
version: "0"
|
104
|
-
prerelease: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
105
88
|
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
- !ruby/object:Gem::Dependency
|
106
97
|
name: rdoc
|
107
|
-
requirement:
|
108
|
-
- !ruby/object:Gem::Dependency
|
109
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
110
99
|
none: false
|
111
|
-
requirements:
|
112
|
-
- -
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
version: "0"
|
118
|
-
prerelease: false
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
119
104
|
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
120
113
|
name: travis-lint
|
121
|
-
requirement:
|
122
|
-
|
123
|
-
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
description: This Handler will report the events and metrics for a chef-client run
|
129
|
+
to DataDog.
|
130
|
+
email:
|
124
131
|
- packages@datadoghq.com
|
125
132
|
executables: []
|
126
|
-
|
127
133
|
extensions: []
|
128
|
-
|
129
|
-
extra_rdoc_files:
|
134
|
+
extra_rdoc_files:
|
130
135
|
- README.md
|
131
136
|
- LICENSE.txt
|
132
|
-
files:
|
137
|
+
files:
|
133
138
|
- .gitignore
|
134
139
|
- .travis.yml
|
135
140
|
- Gemfile
|
@@ -142,38 +147,30 @@ files:
|
|
142
147
|
- test/helper.rb
|
143
148
|
- test/test_chef-handler-datadog.rb
|
144
149
|
homepage: http://www.datadoghq.com/
|
145
|
-
licenses:
|
150
|
+
licenses:
|
146
151
|
- BSD
|
147
152
|
post_install_message:
|
148
153
|
rdoc_options: []
|
149
|
-
|
150
|
-
require_paths:
|
154
|
+
require_paths:
|
151
155
|
- lib
|
152
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
153
157
|
none: false
|
154
|
-
requirements:
|
155
|
-
- -
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
|
158
|
-
|
159
|
-
- 0
|
160
|
-
version: "0"
|
161
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
163
|
none: false
|
163
|
-
requirements:
|
164
|
-
- -
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
|
167
|
-
segments:
|
168
|
-
- 0
|
169
|
-
version: "0"
|
164
|
+
requirements:
|
165
|
+
- - ! '>='
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
170
168
|
requirements: []
|
171
|
-
|
172
169
|
rubyforge_project:
|
173
|
-
rubygems_version: 1.8.
|
170
|
+
rubygems_version: 1.8.23
|
174
171
|
signing_key:
|
175
172
|
specification_version: 3
|
176
173
|
summary: Chef Handler for DataDog events and metrics
|
177
|
-
test_files:
|
174
|
+
test_files:
|
178
175
|
- test/helper.rb
|
179
176
|
- test/test_chef-handler-datadog.rb
|