lib/syslogstash.rb in syslogstash-0.3.0 vs lib/syslogstash.rb in syslogstash-0.4.0

- old
+ new

@@ -6,41 +6,45 @@ # Read syslog messages from one or more sockets, and send it to a logstash # server. # class Syslogstash def initialize(sockets, servers, backlog) - @writer = LogstashWriter.new(servers, backlog) + @metrics = PrometheusExporter.new - @readers = sockets.map { |f, tags| SyslogReader.new(f, tags, @writer) } + @writer = LogstashWriter.new(servers, backlog, @metrics) + + @readers = sockets.map { |f, tags| SyslogReader.new(f, tags, @writer, @metrics) } end def run + @metrics.run @writer.run @readers.each { |w| w.run } - tw = ThreadsWait.new(@writer.thread, *(@readers.map { |r| r.thread })) + tw = ThreadsWait.new(@metrics.thread, @writer.thread, *(@readers.map { |r| r.thread })) dead_thread = tw.next_wait if dead_thread == @writer.thread $stderr.puts "Writer thread crashed." - exit 1 + elsif dead_thread == @metrics.thread + $stderr.puts "Metrics exporter thread crashed." else reader = @readers.find { |r| r.thread == dead_thread } $stderr.puts "Reader thread for #{reader.file} crashed." end begin dead_thread.join rescue Exception => ex - $stderr.puts "Exception in worker thread was: #{ex.message} (#{ex.class})" + $stderr.puts "Exception in thread was: #{ex.message} (#{ex.class})" $stderr.puts ex.backtrace.map { |l| " #{l}" }.join("\n") end exit 1 end end require_relative 'syslogstash/syslog_reader' require_relative 'syslogstash/logstash_writer' - +require_relative 'syslogstash/prometheus_exporter'