class Fluent::Plugin::OsqueryInput

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_storm.rb, line 20
def initialize
  super
  require 'net/http'
  require 'uri'
end

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_storm.rb, line 26
def configure(conf)
  super
end
shutdown() click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_storm.rb, line 35
def shutdown
  super
end
start() click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_storm.rb, line 30
def start
  super
  timer_execute(:in_storm_timer, interval, &method(:execute))
end

Private Instance Methods

execute() click to toggle source
# File lib/fluent/plugin/in_storm.rb, line 41
def execute
  @time = Fluent::Engine.now
  record = Hash.new(0)
  uri = URI.parse("#{@url}/api/v1/topology/summary")
  log.debug(uri)
  Net::HTTP.start(uri.host, uri.port) do |http|
    request = Net::HTTP::Get.new(uri.request_uri)
    http.request(request) do |response|
      record = JSON.parse(response.body) rescue next
      record["topologies"].each do |line|
        topology_id = line["id"]
        #@log.debug(line["id"])
        uri = URI.parse("#{@url}/api/v1/topology/#{topology_id}")
        if @window && @sys
          uri = URI.parse("#{@url}/api/v1/topology/#{topology_id}?window=#{@window}&sys=#{@sys}")
        elsif @window
          uri = URI.parse("#{@url}/api/v1/topology/#{topology_id}?window=#{@window}")
        elsif @sys
          uri = URI.parse("#{@url}/api/v1/topology/#{topology_id}?sys=#{@sys}")
        end
        #@log.debug(uri)
        emit_record = Hash.new(0)
        Net::HTTP.start(uri.host, uri.port) do |http|
          request = Net::HTTP::Get.new(uri.request_uri)
          http.request(request) do |response|
            emit_record = JSON.parse(response.body) rescue next
            emit_record.delete("visualizationTable")
            emit_record.delete("configuration")
          end
        end
        log.debug(emit_record)
        router.emit(@tag, @time, emit_record)
      end
    end
  end
rescue => e
  log.error('faild to run', error: e.to_s, error_class: e.class.to_s)
  log.error_backtrace
end