class Opentsdb::Client

ruby client for OpenTsdb HTTP API

Attributes

host[R]
port[R]
query_commads[RW]
query_options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/opentsdb/client.rb, line 11
def initialize(options = {})
  @host = options.delete(:host) || Opentsdb.host
  @port = options.delete(:port) || Opentsdb.port
  @query_options = options.merge(Opentsdb.options)
  @faraday = Opentsdb::Faraday.new(query_url, @query_options)
  @query_commads = parse_queries
end

Public Instance Methods

parse_queries() click to toggle source
# File lib/opentsdb/client.rb, line 33
def parse_queries
  [].tap do |qs|
    query_options[:q].split(';').each do |q|
      query = QueryParser.parse(q)
      query.interval   = query_options[:interval]
      query.start_time = query_options[:begin].to_i
      query.end_time   = query_options[:end].to_i
      qs << query
    end
  end
end
query() click to toggle source
# File lib/opentsdb/client.rb, line 19
def query
  [].tap do |results|
    query_commads.each do |query_commad|
      start = Time.now
      Opentsdb.logger.debug "[OpenTSDB] query: #{query_commad.to_json}"
      res = post query_commad.to_json
      Opentsdb.logger.debug "[OpenTSDB] result: #{res.body}"
      Opentsdb.logger.info "[OpenTSDB] consume: #{Time.now - start} s"
      status = res.status.to_i == 200 ? 'ok' : 'error'
      results << { status: status, condition: query_commad, result: res.body }
    end
  end
end

Private Instance Methods

query_url() click to toggle source
# File lib/opentsdb/client.rb, line 47
def query_url
  "http://#{host}:#{port}/api/query"
end