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