chef-handler-librato 1.0.0

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/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+ .idea
15
+ .idea/*
16
+ # YARD artifacts
17
+ .yardoc
18
+ _yardoc
19
+ doc/
data/README.md ADDED
@@ -0,0 +1,11 @@
1
+ chef-handler-librato
2
+ Author - Brian Scott (b@bscott.me)
3
+ ====================
4
+
5
+ Chef Handler to send metrics to Librato metrics
6
+
7
+ Please see the wiki for instructions on how to use.
8
+
9
+ Patches welcome, just send me a pull request!
10
+
11
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "chef-handler-librato"
6
+ s.version = "1.0.0"
7
+ s.authors = ["Brian Scott"]
8
+ s.email = ["brainscott@gmail.com"]
9
+ s.homepage = ""
10
+ s.summary = %q{Push reporting stats to Librato metrics}
11
+ s.description = %q{Push reporting stats to Librato metrics}
12
+
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ # specify any dependencies here; for example:
20
+ s.add_development_dependency "librato-metrics"
21
+ s.add_runtime_dependency "librato-metrics"
22
+ s.add_runtime_dependency "chef"
23
+ end
@@ -0,0 +1,68 @@
1
+ #
2
+ # Author:: Ian Meyer <ianmmeyer@gmail.com>
3
+ # Copyright:: Copyright (c) 2012, Ian Meyer
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+
20
+ require "rubygems"
21
+ Gem.clear_paths
22
+ require "librato/metrics"
23
+ require "chef"
24
+ require "chef/handler"
25
+
26
+ class LibratoReporting < Chef::Handler
27
+ attr_writer :metrics_type, :source, :email, :api_key
28
+
29
+ def initialize(options = {})
30
+ @metric_type = options[:metric_type] || "counter"
31
+ @source = options[:source] || "#{Chef::Config[:node_name]}"
32
+ @email = options[:email]
33
+ @api_key = options[:api_key]
34
+ end
35
+
36
+ def report
37
+ gemspec = if Gem::Specification.respond_to? :find_by_name
38
+ Gem::Specification.find_by_name('chef-handler-librato')
39
+ else
40
+ Gem.source_index.find_name('chef-handler-librato').last
41
+ end
42
+
43
+ Chef::Log.debug("#{gemspec.full_name} loaded as a handler.")
44
+
45
+ @l = Librato::Metrics.new
46
+ @l.authenticate "#{@email}" "#{@api_key}"
47
+
48
+ metrics = Hash.new
49
+ metrics[:updated_resources] = run_status.updated_resources.length
50
+ metrics[:all_resources] = run_status.all_resources.length
51
+ metrics[:elapsed_time] = run_status.elapsed_time
52
+
53
+ if run_status.success?
54
+ metrics[:success] = 1
55
+ metrics[:fail] = 0
56
+ else
57
+ metrics[:success] = 0
58
+ metrics[:fail] = 1
59
+ end
60
+
61
+ metrics.length.each do |librato|
62
+ metrics.each do |metric, value|
63
+ Chef::Log.debug("#{metric} #{value} #{l.time_now}")
64
+ @l.submit :"#{metric}" => {:type => :"#{@metric_type}", :value => "#{value}", :source => "#{@source}" }
65
+ end
66
+ end
67
+ end
68
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chef-handler-librato
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Brian Scott
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-06-22 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: librato-metrics
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: librato-metrics
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
44
+ - !ruby/object:Gem::Dependency
45
+ name: chef
46
+ prerelease: false
47
+ requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ type: :runtime
55
+ version_requirements: *id003
56
+ description: Push reporting stats to Librato metrics
57
+ email:
58
+ - brainscott@gmail.com
59
+ executables: []
60
+
61
+ extensions: []
62
+
63
+ extra_rdoc_files: []
64
+
65
+ files:
66
+ - .gitignore
67
+ - README.md
68
+ - Rakefile
69
+ - chef-handler-librato.gemspec
70
+ - lib/chef/chef_handler_librato.rb
71
+ has_rdoc: true
72
+ homepage: ""
73
+ licenses: []
74
+
75
+ post_install_message:
76
+ rdoc_options: []
77
+
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ requirements: []
95
+
96
+ rubyforge_project:
97
+ rubygems_version: 1.3.6
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Push reporting stats to Librato metrics
101
+ test_files: []
102
+