Sha256: eb44353d36172bbdd265c11846f5af9b485846bb0d4fd03fb763779aa7dd88ae

Contents?: true

Size: 1.79 KB

Versions: 7

Compression:

Stored size: 1.79 KB

Contents

# Worker used to report metrics to various services

module RestFtpDaemon
  class ReporterWorker < Worker

  protected

    def worker_init
      # Load corker conf
      config_section :reporter

      # Other configuration options
      @report_newrelic = Conf.newrelic_enabled?

      # Check that everything is OK
      return "invalid timer"      unless @config[:timer].to_i > 0
      return false
    end

    def worker_after
      # Sleep for a few seconds
      worker_status WORKER_STATUS_WAITING
      sleep @config[:timer]
    end

    def worker_process
      # Announce we are working
      worker_status WORKER_STATUS_REPORTING

      # Report metrics
      do_metrics
    end

  private

    def do_metrics
      # What metrics to report?
      report_newrelic = Conf.newrelic_enabled?

      # Get common metrics and dump them to logs
      log_debug "begin metrics sample"
      metrics = Metrics.sample

      # Skip following if no valid metrics collected
      unless metrics.is_a? Hash
        log_error "unable to collect metrics"
        return
      end
      log_info "collected metrics (newrelic: #{@report_newrelic})", metrics

      # Transpose metrics to NewRelic metrics
      report_newrelic(metrics) if @report_newrelic
    end

    def report_newrelic metrics
      metrics_newrelic = {}
      metrics.each do |group, pairs|
        pairs.each do |key, value|
          name = "rftpd/#{group}/#{key}"
          ::NewRelic::Agent.record_metric(name, value)
          metrics_newrelic[name] = value
        end
      end

      # Don't dump metrics unless we're debugging
      msg_newrelic = "reported metrics to NewRelic [#{ENV['NEW_RELIC_APP_NAME']}]"
      if @config[:debug]
        log_debug msg_newrelic, metrics_newrelic
      else
        log_info msg_newrelic
      end

    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rest-ftp-daemon-0.423.3 lib/rest-ftp-daemon/workers/reporter.rb
rest-ftp-daemon-0.423.2 lib/rest-ftp-daemon/workers/reporter.rb
rest-ftp-daemon-0.423.1 lib/rest-ftp-daemon/workers/reporter.rb
rest-ftp-daemon-0.423.0 lib/rest-ftp-daemon/workers/reporter.rb
rest-ftp-daemon-0.422.0 lib/rest-ftp-daemon/workers/reporter.rb
rest-ftp-daemon-0.421.1 lib/rest-ftp-daemon/workers/reporter.rb
rest-ftp-daemon-0.421.0 lib/rest-ftp-daemon/workers/reporter.rb