class Proxy::Monitoring::Icinga2::Icinga2ResultUploader
Attributes
semaphore[R]
Public Class Methods
new(queue)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_result_uploader.rb, line 17 def initialize(queue) @queue = queue.queue @semaphore = Mutex.new end
Public Instance Methods
do_start()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_result_uploader.rb, line 72 def do_start @thread = Thread.new { upload } @thread.abort_on_exception = true @thread end
stop()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_result_uploader.rb, line 78 def stop @thread.terminate unless @thread.nil? end
upload()
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_result_uploader.rb, line 22 def upload while change = @queue.pop with_event_counter('Icinga2 Result Uploader') do symbolize_keys_deep!(change) change[:timestamp] = change[:check_result][:schedule_end] if change.key?(:check_result) if change.key?(:downtime) && change[:downtime].is_a?(Hash) change[:host] = change[:downtime][:host_name] if change[:host].nil? || change[:host].empty? change[:service] = change[:downtime][:service_name] if change[:service].nil? || change[:service].empty? end if change[:service].nil? || change[:service].empty? change[:service] = 'Host Check' end case change[:type] when 'StateChange' transformed = { result: change[:check_result][:state] } when 'AcknowledgementSet' transformed = { acknowledged: true } when 'AcknowledgementCleared' transformed = { acknowledged: false } when 'DowntimeTriggered' transformed = { downtime: true } when 'DowntimeRemoved' transformed = { downtime: false } when '_parsed' transformed = change.dup.reject! { |k, _v| k == :type } else next end transformed.merge!( host: change[:host], service: change[:service], timestamp: change[:timestamp] ) begin MonitoringResult.new.push_result(transformed.to_json) rescue Errno::ECONNREFUSED => e logger.error "Foreman refused connection when tried to upload monitoring result: #{e.message}" sleep 10 rescue => e logger.error "Error while uploading monitoring results to Foreman: #{e.message}" sleep 1 retry end end end end
Private Instance Methods
add_domain(host)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_result_uploader.rb, line 92 def add_domain(host) domain = Proxy::Monitoring::Plugin.settings.strip_domain host = "#{host}#{domain}" unless domain.nil? host end
symbolize_keys_deep!(h)
click to toggle source
# File lib/smart_proxy_monitoring_icinga2/icinga2_result_uploader.rb, line 84 def symbolize_keys_deep!(h) h.keys.each do |k| ks = k.to_sym h[ks] = h.delete k symbolize_keys_deep! h[ks] if h[ks].is_a? Hash end end