class DatadogChefMetrics
helper class for sending datadog metrics from a chef run
Public Class Methods
new()
click to toggle source
# File lib/chef/handler/datadog_chef_metrics.rb, line 10 def initialize @hostname = '' @run_status = nil end
Public Instance Methods
emit_to_datadog(dog)
click to toggle source
Emit Chef
metrics to Datadog
@param dog [Dogapi::Client] Dogapi Client to be used
# File lib/chef/handler/datadog_chef_metrics.rb, line 36 def emit_to_datadog(dog) # Send base success/failure metric dog.emit_point('chef.run.success', @run_status.success? ? 1 : 0, host: @hostname, type: 'counter') dog.emit_point('chef.run.failure', @run_status.success? ? 0 : 1, host: @hostname, type: 'counter') # If there is a failure during compile phase, a large portion of # run_status may be unavailable. Bail out here warn_msg = 'Error during compile phase, no Datadog metrics available.' return Chef::Log.warn(warn_msg) if compile_error? dog.emit_point('chef.resources.total', @run_status.all_resources.length, host: @hostname) dog.emit_point('chef.resources.updated', @run_status.updated_resources.length, host: @hostname) dog.emit_point('chef.resources.elapsed_time', @run_status.elapsed_time, host: @hostname) Chef::Log.debug('Submitted Chef metrics back to Datadog') rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e Chef::Log.warn("Could not send metrics to Datadog. Connection error:\n" + e) rescue StandardError => e Chef::Log.warn("Could not determine whether chef run metrics were successfully submitted to Datadog. Error:\n#{e}") end
with_hostname(hostname)
click to toggle source
set the target hostname (chef node name)
@param hostname [String] hostname used for reporting metrics @return [DatadogChefMetrics] instance reference to self enabling method chaining
# File lib/chef/handler/datadog_chef_metrics.rb, line 19 def with_hostname(hostname) @hostname = hostname self end
with_run_status(run_status)
click to toggle source
set the chef run status used for the report
@param run_status [Chef::RunStatus] current run status @return [DatadogChefMetrics] instance reference to self enabling method chaining
# File lib/chef/handler/datadog_chef_metrics.rb, line 28 def with_run_status(run_status) @run_status = run_status self end