Class: Fluent::Plugin::MySQLSlowQueryInput

Inherits:
TailInput
  • Object
show all
Defined in:
lib/fluent/plugin/in_mysql_slow_query.rb

Instance Method Summary collapse

Instance Method Details

#parser_create(conf) ⇒ Object



24
25
26
# File 'lib/fluent/plugin/in_mysql_slow_query.rb', line 24

def parser_create(conf)
  return MySlog.new
end

#receive_lines(lines, tail_watcher) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/fluent/plugin/in_mysql_slow_query.rb', line 37

def receive_lines(lines, tail_watcher)
  es = Fluent::MultiEventStream.new
  @parser.divide(lines).each do |record|
    begin
      record = stringify_keys @parser.parse_record(record)
      if time = record.delete('date')
        time = time.to_i
      else
        time = Time.now.to_i
      end

      if record['db'].nil? || record['db'].empty?
        record['db'] = @last_use_database ? @last_use_database : search_last_use_database()
      end

      es.add(time, record)
    rescue
      $log.warn record, :error=>$!.to_s
      $log.debug_backtrace
    end
  end

  unless es.empty?
    begin
      router.emit_stream(@tag, es)
    rescue
    end
  end
end

#search_last_use_databaseObject



28
29
30
31
32
33
34
35
# File 'lib/fluent/plugin/in_mysql_slow_query.rb', line 28

def search_last_use_database
  last_use_query = File.open(@path).grep(/^use /).last
  if last_use_query
    last_use_database = last_use_query.match(/^use ([^;]+)/)
    @last_use_database = last_use_database[1] if last_use_database
    return @last_use_database
  end
end