class Fluent::ProcCountInput

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_proc_count.rb, line 10
def initialize
  super
end

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_proc_count.rb, line 23
def configure(conf)
  super
  @processes = @processes.map { |process|
    s = OpenStruct.new
    s.regexp = Regexp.new(process.regexp)
    s.proc_count = process.proc_count
    s.tag = process.tag
    s.operator_name = process.operator_name
    s.operator = select_operator(process.operator_name)
    s
  }
end
correct_process?(process_spec, expect_proc_count) click to toggle source
# File lib/fluent/plugin/in_proc_count.rb, line 93
def correct_process?(process_spec, expect_proc_count)
  expect_proc_count.public_send(process_spec.operator, process_spec.proc_count.to_i)
end
emit_proc_count() click to toggle source
# File lib/fluent/plugin/in_proc_count.rb, line 53
def emit_proc_count
  @processes.each do |process_spec|
    begin
      record_size = get_processes(process_spec).size
      if !correct_process?(process_spec, record_size)
        router.emit(
          process_spec.tag,
          Fluent::Engine.now,
          {
            regexp: process_spec.regexp.source,
            proc_count: record_size,
            expect_proc_count: process_spec.proc_count,
            operator_name: process_spec.operator_name,
            hostname: Socket.gethostname
          }
        )
      end
    rescue => e
      log.error e
    end
  end
end
get_processes(process_spec) click to toggle source
# File lib/fluent/plugin/in_proc_count.rb, line 97
def get_processes(process_spec)
  processes = []
  ProcTable.ps do |process|
    if process_spec.regexp.match(process.cmdline)
      processes << process
    end
  end
  processes
end
run() click to toggle source
# File lib/fluent/plugin/in_proc_count.rb, line 46
def run
  loop do
    Thread.new(&method(:emit_proc_count))
    sleep @interval
  end
end
select_operator(operator_name) click to toggle source
# File lib/fluent/plugin/in_proc_count.rb, line 76
def select_operator(operator_name)
  case operator_name.to_sym
  when :equal
    "=="
  when :gather_than
    ">"
  when :gather_equal
    ">="
  when :less_than
    "<"
  when :less_equal
    "<="
  else
    raise Fluent::ConfigError, "proc_count operator allows equal/gather_than/gather_equal/less_than/less_equal"
  end
end
shutdown() click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_proc_count.rb, line 41
def shutdown
  super
  Thread.kill(@thread)
end
start() click to toggle source
Calls superclass method
# File lib/fluent/plugin/in_proc_count.rb, line 36
def start
  super
  @thread = Thread.new(&method(:run))
end