Class: Syslogstash

Inherits:
Object
  • Object
show all
Defined in:
lib/syslogstash.rb

Overview

Read syslog messages from one or more sockets, and send it to a logstash server.

Defined Under Namespace

Classes: Config, LogstashWriter, PrometheusExporter, SyslogReader

Instance Method Summary collapse

Constructor Details

#initialize(cfg) ⇒ Syslogstash

Returns a new instance of Syslogstash.



10
11
12
13
14
15
16
# File 'lib/syslogstash.rb', line 10

def initialize(cfg)
  @cfg    = cfg
  @stats  = PrometheusExporter.new(cfg)
  @writer = LogstashWriter.new(cfg, @stats)
  @reader = SyslogReader.new(cfg, @writer, @stats)
  @logger = cfg.logger
end

Instance Method Details

#force_disconnect!Object



47
48
49
# File 'lib/syslogstash.rb', line 47

def force_disconnect!
  @writer.force_disconnect!
end

#runObject



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
  if @cfg.stats_server
    @logger.debug("main") { "Running stats server" }
    @stats.run
  end

  @writer.run
  @reader.run

  dead_thread = ThreadsWait.new(@reader.thread, @writer.thread).next_wait

  if dead_thread == @writer.thread
    @logger.error("main") { "Writer thread crashed." }
  elsif dead_thread == @reader.thread
    @logger.error("main") { "Reader thread crashed." }
  else
    @logger.fatal("main") { "ThreadsWait#next_wait returned unexpected value #{dead_thread.inspect}" }
    exit 1
  end

  begin
    dead_thread.join
  rescue Exception => ex
    @logger.error("main") { (["Exception in crashed thread was: #{ex.message} (#{ex.class})"] + ex.backtrace).join("\n  ") }
  end

  exit 1
end