Class: Chef::Handler::LogDNA

Inherits:
Chef::Handler show all
Defined in:
lib/chef/handler/logdna.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ LogDNA

Returns a new instance of LogDNA.



14
15
16
17
# File 'lib/chef/handler/logdna.rb', line 14

def initialize(config={})
	@config = Mash.new(config)
	@ldna = prepare_logdna
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



12
13
14
# File 'lib/chef/handler/logdna.rb', line 12

def config
  @config
end

Instance Method Details

#get_hostnameObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/chef/handler/logdna.rb', line 29

def get_hostname
	node = run_status.node
	use_ec2_instance_id = !config.key?(:use_ec2_instance_id) || (config.key?(:use_ec2_instance_id) && config[:use_ec2_instance_id])
	if config[:hostname]
		config[:hostname]
	elsif use_ec2_instance_id && node.attribute?('ec2') && node.ec2.attribute?('instance_id')
		node.ec2.instance_id
	else
		node.name
	end
end

#prepare_logdnaObject



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/chef/handler/logdna.rb', line 41

def prepare_logdna
	options = {:hostname => get_hostname, :index_meta => true, :mac => Mac.addr}
	logdna_key = config[:logdna_key]
	if !config.key?(:logdna_key)
		Chef::Log.warn("You need LogDNA Ingestion Key in order to stream logs")
		fail ArgumentError, 'Missing LogDNA Ingestion Key'
		return false
	else
		Logdna::Ruby.new(config[:logdna_key], options)
	end
end

#reportObject



19
20
21
22
23
24
25
26
27
# File 'lib/chef/handler/logdna.rb', line 19

def report
	if run_status.success?
		status = "SUCCESS"
	else
		status = "FAILURE"
	end
               line = run_status
	sendLog status line
end

#sendLog(status, line) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/chef/handler/logdna.rb', line 53

def sendLog(status, line)
	unless @ldna.nil?
		@ldna.log(line, {:app => "chef", :level => status})
	else
		Chef::Log.warn("LogDNA Handler has not been set properly")
	end
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
	Chef::Log.error("Connection error:\n"+e)
end