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'