chef-handler-datadog 0.0.1 → 0.0.2
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/Gemfile +1 -2
- data/README.rdoc +2 -4
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/lib/chef-handler-datadog.rb +53 -0
- data/test/helper.rb +1 -1
- data/test/test_chef-handler-datadog.rb +1 -1
- metadata +9 -10
- data/.document +0 -5
- data/chef-handler-datadog.gemspec +0 -68
- data/lib/chef/handler/datadog_handler.rb +0 -41
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= chef-handler-datadog
|
2
2
|
|
3
|
-
|
3
|
+
An Exception and Report Handler for Chef.
|
4
4
|
|
5
5
|
== Contributing to chef-handler-datadog
|
6
6
|
|
@@ -14,6 +14,4 @@ Description goes here.
|
|
14
14
|
|
15
15
|
== Copyright
|
16
16
|
|
17
|
-
Copyright (c) 2011
|
18
|
-
further details.
|
19
|
-
|
17
|
+
Copyright (c) 2011 Datadog, Inc. See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
@@ -15,12 +15,12 @@ require 'jeweler'
|
|
15
15
|
Jeweler::Tasks.new do |gem|
|
16
16
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
17
|
gem.name = "chef-handler-datadog"
|
18
|
-
gem.homepage = "http://
|
18
|
+
gem.homepage = "http://www.datadoghq.com/"
|
19
19
|
gem.license = "BSD"
|
20
20
|
gem.summary = %Q{Chef Handler for DataDog events and metrics}
|
21
|
-
gem.description = %Q{
|
22
|
-
gem.email = "
|
23
|
-
gem.authors = ["Mike Fiedler"]
|
21
|
+
gem.description = %Q{This Handler will report the events and metrics for a chef-client run to DataDog.}
|
22
|
+
gem.email = "packages@datadoghq.com"
|
23
|
+
gem.authors = ["Mike Fiedler", "Adam Jacob"]
|
24
24
|
# dependencies defined in Gemfile
|
25
25
|
end
|
26
26
|
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'chef'
|
3
|
+
require 'chef/handler'
|
4
|
+
require 'dogapi'
|
5
|
+
|
6
|
+
class DataDog < Chef::Handler
|
7
|
+
def initialize(api_key)
|
8
|
+
@api_key = api_key
|
9
|
+
@dog = Dogapi::Client.new(api_key)
|
10
|
+
end
|
11
|
+
|
12
|
+
def report
|
13
|
+
# Send the metrics
|
14
|
+
begin
|
15
|
+
@dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => run_status.node.name)
|
16
|
+
@dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => run_status.node.name)
|
17
|
+
@dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => run_status.node.name)
|
18
|
+
rescue Errno::ECONNREFUSED => e
|
19
|
+
Chef::Log.error("Could not connect to DataDog. Connection error:\n" + e)
|
20
|
+
end
|
21
|
+
|
22
|
+
event_data = "Chef run for #{run_status.node.name}"
|
23
|
+
if run_status.success?
|
24
|
+
event_data << " complete in #{run_status.elapsed_time} seconds\n"
|
25
|
+
else
|
26
|
+
event_data << " failed in #{run_status.elapsed_time} seconds\n"
|
27
|
+
end
|
28
|
+
event_data << "Managed #{run_status.all_resources.length} resources\n"
|
29
|
+
event_data << "Updated #{run_status.updated_resources.length} resources"
|
30
|
+
if run_status.updated_resources.length.to_i > 0
|
31
|
+
event_data << "\n\n@@@\n"
|
32
|
+
run_status.updated_resources.each do |r|
|
33
|
+
event_data << "- #{r.to_s} (#{r.defined_at})\n"
|
34
|
+
end
|
35
|
+
event_data << "\n@@@\n"
|
36
|
+
end
|
37
|
+
|
38
|
+
if run_status.failed?
|
39
|
+
event_data << "\n\n@@@\n#{run_status.formatted_exception}\n@@@\n"
|
40
|
+
event_data << "\n\n@@@\n#{run_status.backtrace.join("\n")}\n@@@\n"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Submit the details back to DataDog
|
44
|
+
begin
|
45
|
+
@dog.emit_event(Dogapi::Event.new(event_data), :host => run_status.node.name)
|
46
|
+
# TODO: add chef roles to set the node's #tags in newsfeed
|
47
|
+
rescue Errno::ECONNREFUSED => e
|
48
|
+
Chef::Log.error("Could not connect to DataDog. Connection error:\n" + e)
|
49
|
+
Chef::Log.error("Data to be submitted was:")
|
50
|
+
Chef::Log.error(event_data)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/test/helper.rb
CHANGED
@@ -2,6 +2,6 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class TestChefHandlerDatadog < Test::Unit::TestCase
|
4
4
|
should "probably rename this file and start testing for real" do
|
5
|
-
flunk "hey buddy, you should probably rename this file and start testing for real"
|
5
|
+
# flunk "hey buddy, you should probably rename this file and start testing for real"
|
6
6
|
end
|
7
7
|
end
|
metadata
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-handler-datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mike Fiedler
|
14
|
+
- Adam Jacob
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2011-11-
|
19
|
+
date: 2011-11-17 00:00:00 Z
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -123,8 +124,8 @@ dependencies:
|
|
123
124
|
name: rdoc
|
124
125
|
prerelease: false
|
125
126
|
type: :development
|
126
|
-
description:
|
127
|
-
email:
|
127
|
+
description: This Handler will report the events and metrics for a chef-client run to DataDog.
|
128
|
+
email: packages@datadoghq.com
|
128
129
|
executables: []
|
129
130
|
|
130
131
|
extensions: []
|
@@ -133,18 +134,16 @@ extra_rdoc_files:
|
|
133
134
|
- LICENSE.txt
|
134
135
|
- README.rdoc
|
135
136
|
files:
|
136
|
-
- .document
|
137
137
|
- Gemfile
|
138
138
|
- Gemfile.lock
|
139
139
|
- LICENSE.txt
|
140
140
|
- README.rdoc
|
141
141
|
- Rakefile
|
142
142
|
- VERSION
|
143
|
-
- chef-handler-datadog.
|
144
|
-
- lib/chef/handler/datadog_handler.rb
|
143
|
+
- lib/chef-handler-datadog.rb
|
145
144
|
- test/helper.rb
|
146
145
|
- test/test_chef-handler-datadog.rb
|
147
|
-
homepage: http://
|
146
|
+
homepage: http://www.datadoghq.com/
|
148
147
|
licenses:
|
149
148
|
- BSD
|
150
149
|
post_install_message:
|
data/.document
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = "chef-handler-datadog"
|
8
|
-
s.version = "0.0.1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Mike Fiedler"]
|
12
|
-
s.date = "2011-11-16"
|
13
|
-
s.description = "Chef Handler for DataDog events and metrics."
|
14
|
-
s.email = "miketheman@gmail.com"
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE.txt",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
"Gemfile",
|
22
|
-
"Gemfile.lock",
|
23
|
-
"LICENSE.txt",
|
24
|
-
"README.rdoc",
|
25
|
-
"Rakefile",
|
26
|
-
"VERSION",
|
27
|
-
"chef-handler-datadog.gemspec",
|
28
|
-
"lib/chef/handler/datadog_handler.rb",
|
29
|
-
"test/helper.rb",
|
30
|
-
"test/test_chef-handler-datadog.rb"
|
31
|
-
]
|
32
|
-
s.homepage = "http://github.com/miketheman/chef-handler-datadog"
|
33
|
-
s.licenses = ["BSD"]
|
34
|
-
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = "1.8.10"
|
36
|
-
s.summary = "Chef Handler for DataDog events and metrics"
|
37
|
-
|
38
|
-
if s.respond_to? :specification_version then
|
39
|
-
s.specification_version = 3
|
40
|
-
|
41
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
|
-
s.add_runtime_dependency(%q<dogapi>, [">= 1.2.3"])
|
43
|
-
s.add_runtime_dependency(%q<chef>, [">= 0.9.18"])
|
44
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
45
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
46
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
47
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
48
|
-
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
49
|
-
else
|
50
|
-
s.add_dependency(%q<dogapi>, [">= 1.2.3"])
|
51
|
-
s.add_dependency(%q<chef>, [">= 0.9.18"])
|
52
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
53
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
55
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
56
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
57
|
-
end
|
58
|
-
else
|
59
|
-
s.add_dependency(%q<dogapi>, [">= 1.2.3"])
|
60
|
-
s.add_dependency(%q<chef>, [">= 0.9.18"])
|
61
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
62
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
63
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
64
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
65
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require "chef/handler"
|
2
|
-
require "dogapi"
|
3
|
-
|
4
|
-
class DataDog < Chef::Handler
|
5
|
-
def initialize(api_key)
|
6
|
-
@api_key = api_key
|
7
|
-
@dog = Dogapi::Client.new(api_key)
|
8
|
-
end
|
9
|
-
|
10
|
-
def report
|
11
|
-
# our_time = Time.now.utc
|
12
|
-
@dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => run_status.node.name)
|
13
|
-
@dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => run_status.node.name)
|
14
|
-
@dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => run_status.node.name)
|
15
|
-
|
16
|
-
event_data = "Chef run for #{run_status.node.name}"
|
17
|
-
if run_status.success?
|
18
|
-
event_data << " complete in #{run_status.elapsed_time} seconds\n"
|
19
|
-
else
|
20
|
-
event_data << " failed in #{run_status.elapsed_time} seconds\n"
|
21
|
-
end
|
22
|
-
event_data << "Managed #{run_status.all_resources.length} resources\n"
|
23
|
-
event_data << "Updated #{run_status.updated_resources.length} resources"
|
24
|
-
if run_status.updated_resources.length.to_i > 0
|
25
|
-
event_data << "\n\n@@@\n"
|
26
|
-
run_status.updated_resources.each do |r|
|
27
|
-
event_data << "- #{r.to_s} (#{r.defined_at})\n"
|
28
|
-
end
|
29
|
-
event_data << "\n@@@\n"
|
30
|
-
end
|
31
|
-
|
32
|
-
if run_status.failed?
|
33
|
-
event_data << "\n\n@@@\n#{run_status.formatted_exception}\n@@@\n"
|
34
|
-
event_data << "\n\n@@@\n#{run_status.backtrace.join("\n")}\n@@@\n"
|
35
|
-
end
|
36
|
-
|
37
|
-
# Chef::Log.warn(event_data)
|
38
|
-
# get existig tags, prune, reset with chefroles, and tag #chef
|
39
|
-
@dog.emit_event(Dogapi::Event.new(event_data), :host => run_status.node.name)
|
40
|
-
end
|
41
|
-
end
|