Sha256: 65275ab3b1da3b50e246e3dfd4240e0bfea13a2502bf6a0fe072569989ee3978

Contents?: true

Size: 1.51 KB

Versions: 27

Compression:

Stored size: 1.51 KB

Contents

#encoding: utf-8

module Riemann
  class Babbler

    def helper_error(msg = "Unknown helper error")
      report({
        :service => plugin.service,
        :state => 'critical',
        :description => msg
      })      
    end

    # хэлпер для парса stdout+stderr и exit status
    def shell(*cmd)
      exit_status=nil
      err=nil
      out=nil
      begin
      timeout_shell = ( plugin.interval * 2 ).to_f/3
      Timeout::timeout(timeout_shell) {
        Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thread|
          err = stderr.gets(nil)
          out = stdout.gets(nil)
          [stdin, stdout, stderr].each{|stream| stream.send('close')}
          exit_status = wait_thread.value
        end
      }
      rescue => e
        helper_error "#{e.class} #{e}\n#{e.backtrace.join "\n"}"
      end
      if exit_status.to_i > 0
        err = err.chomp if err
        helper_error(err)
      elsif out
        return out.chomp
      else
        # статус 0, вывода stdout нет
        return ""
      end
    end

    # db get
    # http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.html
    # 
    def sql(connection_string, query)
      begin
        db = Sequel.connect connection_string
        db.fetch(query)
      rescue => e
        helper_error "#{e.class} #{e}\n#{e.backtrace.join "\n"}"
      end
    end

    # http rest 
    def rest_get(url)
      begin
        RestClient.get url
      rescue
        helper_error("Get from url: #{url}")
      end
    end

  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
riemann-babbler-0.8.8 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.7 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.6 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.5 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.4 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.3 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.2 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.1 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.8.0 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.9 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.8 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.7 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.6 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.5 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.4 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.3 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.2 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.1 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.7.0 lib/riemann/babbler/plugin_helpers.rb
riemann-babbler-0.6.9 lib/riemann/babbler/plugin_helpers.rb