class CdnManagerPcacheProbe::Connector

Public Class Methods

new(url, options = {}) click to toggle source
# File lib/cdn_manager_pcache_probe/connector.rb, line 6
def initialize(url, options = {})
  @url = url
  @options = options
end

Public Instance Methods

get_live_probe() click to toggle source
# File lib/cdn_manager_pcache_probe/connector.rb, line 11
def get_live_probe
  get_probe(Time.now)
end
get_probe(options = {}) click to toggle source
# File lib/cdn_manager_pcache_probe/connector.rb, line 15
def get_probe(options = {})
  probe = JSON.parse(
    RestClient.get(
      @url, params: { source: query(options) }
    )
  )
  puts "Response: \n" + JSON.pretty_generate(probe) if options[:debug]
  probe["aggregations"]["bytes_sent"]["value"]
end
query(options = {}) click to toggle source
# File lib/cdn_manager_pcache_probe/connector.rb, line 25
def query(options = {})
  interval = (options[:interval] || 5).to_i
  delay = (options[:delay] || 5).to_i
  volume_key_filter = "\"volume_key\": \"#{options[:key]}\"" if options[:key]
  query = %Q({
    "size": 0,
    "query": {
      "bool": {
          "filter": [
            {
              "range": {
                "@timestamp": {
                  "gt": "now-#{interval + delay}m",
                  "lt": "now-#{delay}m"
                }
              }
            },
            {
              "term": {
                "type": "pcache"
                #{", " + volume_key_filter if options[:key]}
              }
            }
          ]
      }
    },
    "aggs": {
      "bytes_sent": {
        "sum": {
          "field": "body_bytes_sent"
        }
      }
    }
  }).gsub(/\A[[:space:]]+/, '').gsub(/[[:space:]]+\z/, '').gsub(/[[:space:]]+/, ' ')
  puts "Query: \n" + JSON.pretty_generate(JSON.parse(query)) if options[:debug]
  query
end