class GraphiteMetricsChecker

Public Class Methods

new(config,graphite_url,app_id,time_from,time_until) click to toggle source
# File lib/graphite_metrics_checker.rb, line 3
def initialize(config,graphite_url,app_id,time_from,time_until)
  @app_name = config['app_name']
  @list_of_api = config['api']
  @graphite_url = graphite_url
  @app_id = app_id
  @time_from = time_from
  @time_until = time_until
end

Public Instance Methods

get_metrics_for_end_points() click to toggle source
# File lib/graphite_metrics_checker.rb, line 14
def get_metrics_for_end_points
  set_time
  #result_set = []
  @list_of_api.each_pair do |key,api|
    endpoint = api['endpoint']
    metrics = api['metrics']
    metrics.each_pair do |key,metric|
      result = get_metrics(endpoint,metric)
      result =check_result_for_metrics(result)

      if result != nil
        puts "#{endpoint} #{metric} #{result}"
      else
        raise "#{endpoint} #{metric} not found"
      end

      #result_set.push(result)
    end
  end
  #return result_set
end

Private Instance Methods

change_to_format(time) click to toggle source
# File lib/graphite_metrics_checker.rb, line 68
def change_to_format(time)
  time = time.to_s.split(' ')
  date = time[0].gsub('-','')
  hr = time[1].split(':')[0].to_i
  mins = '00'
  time = "#{hr}%3A#{mins}_#{date}"
  time
end
check_result_for_metrics(result) click to toggle source
# File lib/graphite_metrics_checker.rb, line 47
def check_result_for_metrics(result)
  result_set = JSON.parse(result)

  if result_set.size == 0
    return nil
  end
  results = result_set.first['datapoints']
  results.each do |result|
    if result[0] != nil
      return result[0]
    end
  end
  return false

end
get_metrics(end_point,metrics) click to toggle source
# File lib/graphite_metrics_checker.rb, line 63
def get_metrics(end_point,metrics)
  uri = URI.parse("http://#{@graphite_url}/render/?target=#{@app_name}.#{@app_id}.#{end_point}.#{metrics}&yMin=&from=#{@time_from}&until=#{@time_until}&format=json")
  send(uri,Net::HTTP::Get)
end
send(url, http_class, payload=nil, content_type='application/json') click to toggle source
# File lib/graphite_metrics_checker.rb, line 77
def send(url, http_class, payload=nil, content_type='application/json')
  request = http_class.new(url.path)
  request.content_type = content_type unless content_type.nil? || content_type.empty?
  request.body = payload unless payload.nil?

  Net::HTTP.start(url.host, url.port) do |http|
    request = Net::HTTP::Get.new url.request_uri
    response = http.request request
    response.read_body

  end
end
set_time() click to toggle source
# File lib/graphite_metrics_checker.rb, line 40
def set_time
  @time_from = @time_from - 60*30
  @time_until =@time_until + 60*60
  @time_from = change_to_format(@time_from)
  @time_until = change_to_format(@time_until)
end