Class: Fluent::DeisGraphiteOutput

Inherits:
Output
  • Object
show all
Defined in:
lib/fluent/plugin/out_deis-graphite.rb

Instance Method Summary collapse

Constructor Details

#initializeDeisGraphiteOutput



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fluent/plugin/out_deis-graphite.rb', line 18

def initialize

  #Get the cluster name from Google metadata service
  begin
    response = RestClient::Request.execute(method: :get, url: 'http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name',
                        timeout: 10, headers: { "Metadata-Flavor" => "Google"})
    if response.code == 200
      @cluster_name=response.body
    end
  rescue
    p "Couldn't determine cluster name."
  end

  super
end

Instance Method Details

#configure(conf) ⇒ Object



49
50
51
# File 'lib/fluent/plugin/out_deis-graphite.rb', line 49

def configure(conf)
  super
end

#emit(tag, es, chain) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/fluent/plugin/out_deis-graphite.rb', line 53

def emit(tag, es, chain)
  es.each do |time,record|
    if record.key? "kubernetes"
      if record["kubernetes"]["container_name"] == "deis-router"
        split_message = record["log"].split(" - ")
        app = split_message[1].strip
        status_code = split_message[4].strip
        #bytes_sent = split_message[6].strip.to_f
        #response_time = split_message[12].strip.to_f
        #request_time = split_message[13].strip.to_f

        Metriks.meter("response_rates.#{@cluster_name}.#{record["kubernetes"]["pod_name"]}.#{app}.#{status_code}").mark
      end
     end
  end
  chain.next
end

#shutdownObject



45
46
47
# File 'lib/fluent/plugin/out_deis-graphite.rb', line 45

def shutdown
  super
end

#startObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/fluent/plugin/out_deis-graphite.rb', line 34

def start
  super
  puts "Starting reporter: #{@graphite_url}:#{@graphite_port}/#{@graphite_interval}"
  @reporter = Metriks::Reporter::Graphite.new @graphite_url, @graphite_port,:interval => @graphite_interval
  @reporter.start

  @logging_reporter = Metriks::Reporter::Logger.new(:logger => Logger.new("/tmp/matt"))
  @logging_reporter.start
  puts "Logging reporter started. #{@cluster_name}"
end