Sha256: 7c76dbe5810588582546de71643306a54c92630b60401394cbc73371c753cc00
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
module Telemetry module Snmp module Collector class << self def loop_devices count = 0 Telemetry::Snmp::Data::Model::Device.where(:active).order(:last_polled).each do |row| break if count >= 10 next if row.values[:last_polled].to_i + row.values[:frequency] > Time.now.to_i next if device_locked?(row.values[:id]) Telemetry::Logger.info "Grabbing metrics for #{row.values[:hostname]}" device = Telemetry::Snmp::DeviceCollector.new(row.values[:hostname]) device.async.collect count += 1 end end def poll_next_device Telemetry::Snmp::Data::Model::Device.where(:active).order(:last_polled).each do |row| next if row.values[:last_polled].to_i + row.values[:frequency] > Time.now.to_i next if device_locked?(row.values[:id]) Telemetry::Logger.info "Grabbing metrics for #{row.values[:hostname]}" collect(row.values[:id]) break rescue StandardError => e Telemetry::Logger.exception(e, level: 'error') end end def unlock_expired_devices Telemetry::Snmp::Data::Model::DeviceLock.each do |row| next if row.values[:expires] < Sequel::CURRENT_TIMESTAMP Telemetry::Logger.warn "removing lock for #{row.values[:hostname]}" row.delete end end def device_locked?(device_id) Telemetry::Snmp::Data::Model::DeviceLock.where(device_id: device_id).count.positive? end def device_unlocked?(device_id) !device_locked?(device_id) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
telemetry-snmp-0.3.0 | lib/telemetry/snmp/collector.rb |