class LogStash::Filters::Delta

Public Instance Methods

filter(event) click to toggle source
# File lib/logstash/filters/delta.rb, line 59
def filter(event)
  delta = 0

  if @between_fields.length != 1
    return filter_failed(event, @tag_on_failure)
  end

  @between_fields.each do |from, to|
    if !event.include?(from) or !event.include?(to)
      return filter_failed(event, @tag_on_failure)
    end

    begin
      delta = ensure_numeric(event.get(to)) - ensure_numeric(event.get(from))
    rescue ArgumentError
      return filter_failed(event, @tag_on_failure)
    end

    if @min and delta < @min
      return filter_failed(event, @tag_on_min_failure)
    end

    if @max and delta > @max
      return filter_failed(event, @tag_on_max_failure)
    end
  end

  if !@output_field.nil?
    event.set(@output_field, delta)
  end

  filter_matched(event)
end
register() click to toggle source
# File lib/logstash/filters/delta.rb, line 55
def register
end

Private Instance Methods

cast_string_to_numeric(value) click to toggle source
# File lib/logstash/filters/delta.rb, line 36
def cast_string_to_numeric(value)
  begin
    return Integer(value)
  rescue ArgumentError
    return Float(value)
  rescue TypeError
    raise ArgumentError
  end
end
ensure_numeric(value) click to toggle source
# File lib/logstash/filters/delta.rb, line 47
def ensure_numeric(value)
  if (value.is_a? Float or value.is_a? Integer)
    return value
  end
  return cast_string_to_numeric(value)
end
filter_failed(event, tags) click to toggle source
# File lib/logstash/filters/delta.rb, line 31
def filter_failed(event, tags)
  tags.each {|tag| event.tag(tag)}
end