Class: Syslogstash::PrometheusExporter
- Inherits:
-
Object
- Object
- Syslogstash::PrometheusExporter
- Defined in:
- lib/syslogstash/prometheus_exporter.rb
Instance Attribute Summary collapse
-
#thread ⇒ Object
readonly
Returns the value of attribute thread.
Instance Method Summary collapse
- #dropped ⇒ Object
-
#initialize ⇒ PrometheusExporter
constructor
A new instance of PrometheusExporter.
- #received(socket, stamp) ⇒ Object
- #run ⇒ Object
- #sent(server, stamp) ⇒ Object
Constructor Details
#initialize ⇒ PrometheusExporter
Returns a new instance of PrometheusExporter.
9 10 11 12 13 14 15 |
# File 'lib/syslogstash/prometheus_exporter.rb', line 9 def initialize @msg_in = prom.counter(:syslogstash_messages_received, "The number of syslog messages received from each log socket") @msg_out = prom.counter(:syslogstash_messages_sent, "The number of logstash messages sent to each logstash server") @lag = prom.gauge(:syslogstash_lag_ms, "How far behind we are in relaying messages") @queue = prom.gauge(:syslogstash_queue_size, "How many messages are queued to be sent") @dropped = prom.counter(:syslogstash_messages_dropped, "How many syslog messages have been dropped from the backlog queue") end |
Instance Attribute Details
#thread ⇒ Object (readonly)
Returns the value of attribute thread.
7 8 9 |
# File 'lib/syslogstash/prometheus_exporter.rb', line 7 def thread @thread end |
Instance Method Details
#dropped ⇒ Object
39 40 41 42 |
# File 'lib/syslogstash/prometheus_exporter.rb', line 39 def dropped @queue.set({}, @queue.get({}) - 1) @dropped.increment({}) end |
#received(socket, stamp) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/syslogstash/prometheus_exporter.rb', line 17 def received(socket, stamp) @msg_in.increment(socket_path: socket) @queue.set({}, (@queue.get({}) || 0) + 1) if @most_recent_received.nil? || @most_recent_received < stamp @most_recent_received = stamp refresh_lag end end |
#run ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/syslogstash/prometheus_exporter.rb', line 44 def run @thread = Thread.new do app = Rack::Builder.new app.use Prometheus::Middleware::Exporter app.run ->(env) { [404, {'Content-Type' => 'text/plain'}, ['Nope']] } logger = Logger.new($stderr) logger.level = Logger::INFO logger.formatter = proc { |s, t, p, m| "[Syslogstash::PrometheusExporter::WEBrick] #{m}\n" } Rack::Handler::WEBrick.run app, Host: '::', Port: 9159, Logger: logger, AccessLog: [] end end |
#sent(server, stamp) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/syslogstash/prometheus_exporter.rb', line 28 def sent(server, stamp) @msg_out.increment(logstash_server: server) @queue.set({}, @queue.get({}) - 1) if @most_recent_sent.nil? || @most_recent_sent < stamp @most_recent_sent = stamp refresh_lag end end |