class LogStash::Inputs::Varnishlog

Read from varnish cache's shared memory log

Public Instance Methods

close() click to toggle source
# File lib/logstash/inputs/varnishlog.rb, line 45
def close
  finished
end
register() click to toggle source
# File lib/logstash/inputs/varnishlog.rb, line 12
def register
  require 'varnish'
  @vd = Varnish::VSM.VSM_New
  Varnish::VSL.VSL_Setup(@vd)
  Varnish::VSL.VSL_Open(@vd, 1)

end
run(queue) click to toggle source
# File lib/logstash/inputs/varnishlog.rb, line 20
def run(queue)
  @q = queue
  @hostname = Socket.gethostname
  Varnish::VSL.VSL_Dispatch(@vd, self.method(:cb).to_proc, FFI::MemoryPointer.new(:pointer))
end

Private Instance Methods

cb(priv, tag, fd, len, spec, ptr, bitmap) click to toggle source
# File lib/logstash/inputs/varnishlog.rb, line 27
def cb(priv, tag, fd, len, spec, ptr, bitmap)
  begin
    str = ptr.read_string(len)
    event = LogStash::Event.new("message" => str, "host" => @hostname)
    decorate(event)
    event.set("varnish_tag", tag)
    event.set("varnish_fd", fd)
    event.set("varnish_spec", spec)
    event.set("varnish_bitmap", bitmap)
    @q << event
  rescue => e
    @logger.warn("varnishlog exception: #{e.inspect}")
  ensure
    return 0
  end
end