33
44begin
55 require 'dogapi'
6- rescue LoadError => e
7- Puppet . info " You need the `dogapi` gem to use the Datadog report (run puppet with puppet_run_reports on your master)"
6+ rescue LoadError
7+ Puppet . info ' You need the `dogapi` gem to use the Datadog report (run puppet with puppet_run_reports on your master)'
88end
99
1010Puppet ::Reports . register_report ( :datadog_reports ) do
11-
12- configfile = "/etc/datadog-agent/datadog-reports.yaml"
11+ configfile = '/etc/datadog-agent/datadog-reports.yaml'
1312 raise ( Puppet ::ParseError , "Datadog report config file #{ configfile } not readable" ) unless File . readable? ( configfile )
1413 config = YAML . load_file ( configfile )
1514 API_KEY = config [ :datadog_api_key ]
2221 rescue
2322 raise ( Puppet ::ParseError , "Invalid hostname_extraction_regex #{ HOSTNAME_REGEX } " )
2423 end
25- unless HOSTNAME_EXTRACTION_REGEX . named_captures . has_key? " hostname"
24+ unless HOSTNAME_EXTRACTION_REGEX . named_captures . key? ' hostname'
2625 raise ( Puppet ::ParseError , "hostname_extraction_regex doesn't include a match group named 'hostname': #{ HOSTNAME_REGEX } " )
2726 end
2827 else
3433 DESC
3534
3635 def pluralize ( number , noun )
37- begin
38- if number == 0 then
39- "no #{ noun } "
40- elsif number < 1 then
41- "less than 1 #{ noun } "
42- elsif number == 1 then
43- "1 #{ noun } "
44- else
45- "#{ number . round } #{ noun } s"
46- end
47- rescue
48- "#{ number } #{ noun } (s)"
36+ if number == 0
37+ "no #{ noun } "
38+ elsif number < 1
39+ "less than 1 #{ noun } "
40+ elsif number == 1
41+ "1 #{ noun } "
42+ else
43+ "#{ number . round } #{ noun } s"
4944 end
45+ rescue
46+ "#{ number } #{ noun } (s)"
5047 end
5148
52-
5349 def process
54- @summary = self . summary
55- @msg_host = self . host
50+ @summary = summary
51+ @msg_host = host
5652 unless HOSTNAME_EXTRACTION_REGEX . nil?
5753 m = @msg_host . match ( HOSTNAME_EXTRACTION_REGEX )
5854 if !m . nil? && !m [ :hostname ] . nil?
@@ -65,23 +61,23 @@ def process
6561 event_priority = 'low'
6662 event_data = ''
6763
68- if defined? ( self . status )
64+ if defined? ( status )
6965 # for puppet log format 2 and above
70- @status = self . status
66+ @status = status
7167 if @status == 'failed'
7268 event_title = "Puppet failed on #{ @msg_host } "
73- alert_type = " error"
74- event_priority = " normal"
69+ alert_type = ' error'
70+ event_priority = ' normal'
7571 elsif @status == 'changed'
7672 event_title = "Puppet changed resources on #{ @msg_host } "
77- alert_type = " success"
78- event_priority = " normal"
79- elsif @status == " unchanged"
73+ alert_type = ' success'
74+ event_priority = ' normal'
75+ elsif @status == ' unchanged'
8076 event_title = "Puppet ran on, and left #{ @msg_host } unchanged"
81- alert_type = " success"
77+ alert_type = ' success'
8278 else
8379 event_title = "Puppet ran on #{ @msg_host } "
84- alert_type = " success"
80+ alert_type = ' success'
8581 end
8682
8783 else
@@ -90,49 +86,48 @@ def process
9086 end
9187
9288 # Extract statuses
93- total_resource_count = self . resource_statuses . length
94- changed_resources = self . resource_statuses . values . find_all { |s | s . changed }
95- failed_resources = self . resource_statuses . values . find_all { |s | s . failed }
89+ total_resource_count = resource_statuses . length
90+ changed_resources = resource_statuses . values . select { |s | s . changed }
91+ failed_resources = resource_statuses . values . select { |s | s . failed }
9692
9793 # Little insert if we know the config
98- config_version_blurb = if defined? ( self . configuration_version ) then "applied version #{ self . configuration_version } and" else "" end
94+ config_version_blurb = defined? ( configuration_version ) ? "applied version #{ configuration_version } and" : ''
9995
10096 event_data << "Puppet #{ config_version_blurb } changed #{ pluralize ( changed_resources . length , 'resource' ) } out of #{ total_resource_count } ."
10197
10298 # List changed resources
103- if changed_resources . length > 0
99+ unless changed_resources . empty?
104100 event_data << "\n The resources that changed are:\n @@@\n "
105- changed_resources . each { |s | event_data << "#{ s . title } in #{ s . file } :#{ s . line } \n " }
101+ changed_resources . each { |s | event_data << "#{ s . title } in #{ s . file } :#{ s . line } \n " }
106102 event_data << "\n @@@\n "
107103 end
108104
109105 # List failed resources
110- if failed_resources . length > 0
106+ unless failed_resources . empty?
111107 event_data << "\n The resources that failed are:\n @@@\n "
112- failed_resources . each { |s | event_data << "#{ s . title } in #{ s . file } :#{ s . line } \n " }
108+ failed_resources . each { |s | event_data << "#{ s . title } in #{ s . file } :#{ s . line } \n " }
113109 event_data << "\n @@@\n "
114110 end
115111
116112 Puppet . debug "Sending metrics for #{ @msg_host } to Datadog"
117113 @dog = Dogapi ::Client . new ( API_KEY , nil , nil , nil , nil , nil , API_URL )
118114 @dog . batch_metrics do
119- self . metrics . each { |metric , data |
120- data . values . each { |val |
121- name = "puppet.#{ val [ 1 ] . gsub ( / / , '_' ) } .#{ metric } " . downcase
115+ metrics . each do |metric , data |
116+ data . values . each do |val |
117+ name = "puppet.#{ val [ 1 ] . tr ( ' ' , '_' ) } .#{ metric } " . downcase
122118 value = val [ 2 ]
123- @dog . emit_point ( " #{ name } " , value , : host => " #{ @msg_host } " )
124- }
125- }
119+ @dog . emit_point ( name . to_s , value , host : @msg_host . to_s )
120+ end
121+ end
126122 end
127123
128124 Puppet . debug "Sending events for #{ @msg_host } to Datadog"
129125 @dog . emit_event ( Dogapi ::Event . new ( event_data ,
130- :msg_title => event_title ,
131- :event_type => 'config_management.run' ,
132- :event_object => @msg_host ,
133- :alert_type => alert_type ,
134- :priority => event_priority ,
135- :source_type_name => 'puppet'
136- ) , :host => @msg_host )
126+ msg_title : event_title ,
127+ event_type : 'config_management.run' ,
128+ event_object : @msg_host ,
129+ alert_type : alert_type ,
130+ priority : event_priority ,
131+ source_type_name : 'puppet' ) , host : @msg_host )
137132 end
138133end
0 commit comments