Guest User

Untitled

a guest
Dec 4th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #REQUIRES THE FOLLOWING ENVIRONMENT VARIABLES: APPD_USER, APPD_PASS
  2. require "rest-client"
  3. require "json"
  4. require "date"
  5. require "active_support/all"
  6.  
  7. class AppD
  8.  
  9. def get_time(datapoint)
  10. time = datapoint[:startTimeInMillis] || ""
  11. return time
  12. end
  13.  
  14. def get_value(datapoint)
  15. value = datapoint[:value] || 0
  16. return value.round(2)
  17. end
  18.  
  19. def query(metric_path, since=nil)
  20. @APPD_METRIC_URL = "<your AppDynamics url>"
  21. since ||= 3
  22. start_millis = (Time.now - (since*60*60)).to_f * 1000.0
  23. query_params = {
  24. "metric-path": metric_path,
  25. "time-range-type": "BETWEEN_TIMES",
  26. "start-time": start_millis.floor,
  27. "end-time": (Time.now.to_f * 1000.0).floor,
  28. "rollup": "false",
  29. "output": "json"
  30. }
  31. url = "#{@APPD_METRIC_URL}?#{query_params.to_param}"
  32. response = RestClient::Request.execute method: :get, url: url, user: "#{ENV["APPD_USER"]}@<your account>", password: ENV["APPD_PASS"]
  33. result = JSON.parse(response.body, :symbolize_names => true)
  34. return result.first
  35. end
  36.  
  37. def total_since(name, since=nil)
  38. stats = query name, since
  39. total = stats[:metricValues].select{|el| not (el.nil? or el[:value].nil?)}.map{|e| get_value(e)}.sum
  40. return total
  41. end
  42.  
  43. def points(name, since=nil)
  44. stats = query name, since
  45. points = []
  46. if stats.key?(:metricValues)
  47. datapoints = stats[:metricValues]
  48.  
  49. (datapoints.select { |el| not el[0].nil? }).each do|item|
  50. points << { x: get_time(item), y: get_value(item)}
  51. end
  52. end
  53. return points
  54. end
  55.  
  56. def value(name, since=nil)
  57. stats = query name, since
  58. last = (stats[:metricValues].select { |el| not (el.nil? or el[:value].nil?) }).last
  59. return get_value(last)
  60. end
  61. end
Add Comment
Please, Sign In to add comment