chef-handler-datadog 0.0.11 → 0.0.13

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.
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ env:
5
+ - CHEF_VERSION=0.9.18
@@ -2,6 +2,11 @@
2
2
 
3
3
  An Exception and Report Handler for Chef.
4
4
 
5
+ {<img src="https://secure.travis-ci.org/DataDog/chef-handler-datadog.png?branch=master" alt="Build Status" />}[http://travis-ci.org/DataDog/chef-handler-datadog]
6
+ == Using chef-handler-datadog
7
+
8
+ The [Chef integration page](https://app.datadoghq.com/accounts/settings#integrations) has detailed instructions.
9
+
5
10
  == Contributing to chef-handler-datadog
6
11
 
7
12
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ Jeweler::Tasks.new do |gem|
20
20
  gem.summary = %Q{Chef Handler for DataDog events and metrics}
21
21
  gem.description = %Q{This Handler will report the events and metrics for a chef-client run to DataDog.}
22
22
  gem.email = "packages@datadoghq.com"
23
- gem.authors = ["Mike Fiedler", "Adam Jacob"]
23
+ gem.authors = ["Mike Fiedler", "Adam Jacob", "Alexis Le-Quoc"]
24
24
  # dependencies defined in Gemfile
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.11
1
+ 0.0.13
@@ -8,18 +8,26 @@ class Datadog < Chef::Handler
8
8
  # For the tags to work, the client must have created an Application Key on the
9
9
  # "Account Settings" page here: https://app.datadoghq.com/account/settings
10
10
  # It should be passed along from the node/role/environemnt attributes, as the default is nil.
11
- def initialize(opts = {})
11
+ def initialize(opts = nil)
12
+ opts = opts || {}
12
13
  @api_key = opts[:api_key]
13
14
  @application_key = opts[:application_key]
15
+ # If we're on ec2, use the instance by default, unless instructed otherwise
16
+ @use_ec2_instance_id = !opts.has_key?(:use_ec2_instance_id) || opts.has_key?(:use_ec2_instance_id) && opts[:use_ec2_instance_id]
14
17
  @dog = Dogapi::Client.new(@api_key, application_key = @application_key)
15
18
  end
16
19
 
17
20
  def report
21
+ hostname = run_status.node.name
22
+ if @use_ec2_instance_id && run_status.node.attribute?("ec2") && run_status.node.ec2.attribute?("instance_id")
23
+ hostname = run_status.node.ec2.instance_id
24
+ end
25
+
18
26
  # Send the metrics
19
27
  begin
20
- @dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => run_status.node.name)
21
- @dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => run_status.node.name)
22
- @dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => run_status.node.name)
28
+ @dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => hostname)
29
+ @dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => hostname)
30
+ @dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => hostname)
23
31
  rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
24
32
  Chef::Log.error("Could not send metrics to Datadog. Connection error:\n" + e)
25
33
  end
@@ -29,9 +37,9 @@ class Datadog < Chef::Handler
29
37
  if run_status.success?
30
38
  alert_type = "success"
31
39
  event_priority = "low"
32
- event_title << "Chef completed in #{run_time} on #{run_status.node.name} "
40
+ event_title << "Chef completed in #{run_time} on #{hostname} "
33
41
  else
34
- event_title << "Chef failed in #{run_time} on #{run_status.node.name} "
42
+ event_title << "Chef failed in #{run_time} on #{hostname} "
35
43
  end
36
44
 
37
45
  event_data = "Chef updated #{run_status.updated_resources.length} resources out of #{run_status.all_resources.length} resources total."
@@ -56,11 +64,11 @@ class Datadog < Chef::Handler
56
64
  @dog.emit_event(Dogapi::Event.new(event_data,
57
65
  :msg_title => event_title,
58
66
  :event_type => 'config_management.run',
59
- :event_object => run_status.node.name,
67
+ :event_object => hostname,
60
68
  :alert_type => alert_type,
61
69
  :priority => event_priority,
62
70
  :source_type_name => 'chef'
63
- ), :host => run_status.node.name)
71
+ ), :host => hostname)
64
72
 
65
73
  # Get the current list of tags, remove any "role:" entries
66
74
  host_tags = @dog.host_tags(node.name)[1]["tags"] || []
metadata CHANGED
@@ -1,102 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-handler-datadog
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 5
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 11
9
- version: 0.0.11
9
+ - 13
10
+ version: 0.0.13
10
11
  platform: ruby
11
12
  authors:
12
13
  - Mike Fiedler
13
14
  - Adam Jacob
15
+ - Alexis Le-Quoc
14
16
  autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2012-04-05 00:00:00 -04:00
19
- default_executable:
20
+ date: 2012-07-27 00:00:00 Z
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ name: chef
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
23
27
  requirements:
24
28
  - - ">="
25
29
  - !ruby/object:Gem::Version
30
+ hash: 31
26
31
  segments:
27
32
  - 0
28
33
  - 9
29
34
  - 18
30
35
  version: 0.9.18
31
- requirement: *id001
32
- name: chef
33
- prerelease: false
34
36
  type: :runtime
37
+ version_requirements: *id001
35
38
  - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ name: dogapi
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
37
43
  requirements:
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
46
+ hash: 11
40
47
  segments:
41
48
  - 1
42
49
  - 2
43
50
  version: "1.2"
44
- requirement: *id002
45
- name: dogapi
46
- prerelease: false
47
51
  type: :runtime
52
+ version_requirements: *id002
48
53
  - !ruby/object:Gem::Dependency
49
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ name: shoulda
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
50
58
  requirements:
51
59
  - - ">="
52
60
  - !ruby/object:Gem::Version
61
+ hash: 3
53
62
  segments:
54
63
  - 0
55
64
  version: "0"
56
- requirement: *id003
57
- name: shoulda
58
- prerelease: false
59
65
  type: :development
66
+ version_requirements: *id003
60
67
  - !ruby/object:Gem::Dependency
61
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ name: bundler
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
62
72
  requirements:
63
73
  - - ">="
64
74
  - !ruby/object:Gem::Version
75
+ hash: 23
65
76
  segments:
66
77
  - 1
67
78
  - 0
68
79
  - 0
69
80
  version: 1.0.0
70
- requirement: *id004
71
- name: bundler
72
- prerelease: false
73
81
  type: :development
82
+ version_requirements: *id004
74
83
  - !ruby/object:Gem::Dependency
75
- version_requirements: &id005 !ruby/object:Gem::Requirement
84
+ name: jeweler
85
+ prerelease: false
86
+ requirement: &id005 !ruby/object:Gem::Requirement
87
+ none: false
76
88
  requirements:
77
89
  - - ~>
78
90
  - !ruby/object:Gem::Version
91
+ hash: 7
79
92
  segments:
80
93
  - 1
81
94
  - 6
82
95
  - 4
83
96
  version: 1.6.4
84
- requirement: *id005
85
- name: jeweler
86
- prerelease: false
87
97
  type: :development
98
+ version_requirements: *id005
88
99
  - !ruby/object:Gem::Dependency
89
- version_requirements: &id006 !ruby/object:Gem::Requirement
100
+ name: rdoc
101
+ prerelease: false
102
+ requirement: &id006 !ruby/object:Gem::Requirement
103
+ none: false
90
104
  requirements:
91
105
  - - ">="
92
106
  - !ruby/object:Gem::Version
107
+ hash: 3
93
108
  segments:
94
109
  - 0
95
110
  version: "0"
96
- requirement: *id006
97
- name: rdoc
98
- prerelease: false
99
111
  type: :development
112
+ version_requirements: *id006
100
113
  description: This Handler will report the events and metrics for a chef-client run to DataDog.
101
114
  email: packages@datadoghq.com
102
115
  executables: []
@@ -107,6 +120,7 @@ extra_rdoc_files:
107
120
  - LICENSE.txt
108
121
  - README.rdoc
109
122
  files:
123
+ - .travis.yml
110
124
  - Gemfile
111
125
  - Gemfile.lock
112
126
  - LICENSE.txt
@@ -116,7 +130,6 @@ files:
116
130
  - lib/chef-handler-datadog.rb
117
131
  - test/helper.rb
118
132
  - test/test_chef-handler-datadog.rb
119
- has_rdoc: true
120
133
  homepage: http://www.datadoghq.com/
121
134
  licenses:
122
135
  - BSD
@@ -126,23 +139,27 @@ rdoc_options: []
126
139
  require_paths:
127
140
  - lib
128
141
  required_ruby_version: !ruby/object:Gem::Requirement
142
+ none: false
129
143
  requirements:
130
144
  - - ">="
131
145
  - !ruby/object:Gem::Version
146
+ hash: 3
132
147
  segments:
133
148
  - 0
134
149
  version: "0"
135
150
  required_rubygems_version: !ruby/object:Gem::Requirement
151
+ none: false
136
152
  requirements:
137
153
  - - ">="
138
154
  - !ruby/object:Gem::Version
155
+ hash: 3
139
156
  segments:
140
157
  - 0
141
158
  version: "0"
142
159
  requirements: []
143
160
 
144
161
  rubyforge_project:
145
- rubygems_version: 1.3.6
162
+ rubygems_version: 1.8.24
146
163
  signing_key:
147
164
  specification_version: 3
148
165
  summary: Chef Handler for DataDog events and metrics