Class: Syslogstash
- Inherits:
-
Object
- Object
- Syslogstash
- Defined in:
- lib/syslogstash.rb
Overview
Read syslog messages from one or more sockets, and send it to a logstash server.
Defined Under Namespace
Modules: Worker Classes: LogstashWriter, PrometheusExporter, SyslogReader
Instance Method Summary collapse
-
#initialize(sockets, servers, backlog) ⇒ Syslogstash
constructor
A new instance of Syslogstash.
- #run ⇒ Object
Constructor Details
#initialize(sockets, servers, backlog) ⇒ Syslogstash
Returns a new instance of Syslogstash.
10 11 12 13 14 15 16 |
# File 'lib/syslogstash.rb', line 10 def initialize(sockets, servers, backlog) @metrics = PrometheusExporter.new @writer = LogstashWriter.new(servers, backlog, @metrics) @readers = sockets.map { |f, cfg| SyslogReader.new(f, cfg, @writer, @metrics) } end |
Instance Method Details
#run ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/syslogstash.rb', line 18 def run @metrics.run @writer.run @readers.each { |w| w.run } tw = ThreadsWait.new(@metrics.thread, @writer.thread, *(@readers.map { |r| r.thread })) dead_thread = tw.next_wait if dead_thread == @writer.thread $stderr.puts "[Syslogstash] Writer thread crashed." elsif dead_thread == @metrics.thread $stderr.puts "[Syslogstash] Metrics exporter thread crashed." else reader = @readers.find { |r| r.thread == dead_thread } $stderr.puts "[Syslogstash] Reader thread for #{reader.file} crashed." end begin dead_thread.join rescue Exception => ex $stderr.puts "[Syslogstash] Exception in thread was: #{ex.} (#{ex.class})" $stderr.puts ex.backtrace.map { |l| " #{l}" }.join("\n") end exit 1 end |