class InfluxDB::Rails::Middleware::SimpleSubscriber

Subscriber acts as base class for different *Subscriber classes, which are intended as ActiveSupport::Notifications.subscribe consumers.

Attributes

series_name[R]

Public Class Methods

new(configuration, series_name) click to toggle source
Calls superclass method
# File lib/influxdb/rails/middleware/simple_subscriber.rb, line 12
def initialize(configuration, series_name)
  super(configuration)
  @series_name = series_name
end

Public Instance Methods

call(_name, started, finished, _unique_id, payload) click to toggle source
# File lib/influxdb/rails/middleware/simple_subscriber.rb, line 17
def call(_name, started, finished, _unique_id, payload)
  return unless enabled?

  begin
    # InfluxDB::Rails.client.write_point series_name,
    #                                    values:    values(started, finished, payload),
    #                                    tags:      tags(payload),
    #                                    timestamp: timestamp(finished.utc)
    InfluxDB::Rails.client.write_point series_name,
                                       values:    values(started, finished, payload),
                                       tags:      tags(payload),
                                       timestamp: timestamp(started.utc)
  rescue StandardError => e
    log :error, "[InfluxDB::Rails] Unable to write points: #{e.message}"
  end
end

Private Instance Methods

enabled?() click to toggle source
Calls superclass method
# File lib/influxdb/rails/middleware/simple_subscriber.rb, line 64
def enabled?
  super && series_name.present?
end
timestamp(finished) click to toggle source
# File lib/influxdb/rails/middleware/simple_subscriber.rb, line 60
def timestamp(finished)
  InfluxDB.convert_timestamp(finished.utc, configuration.time_precision)
end
values(started, finished, _payload) click to toggle source
# File lib/influxdb/rails/middleware/simple_subscriber.rb, line 36
def values(started, finished, _payload)

  x_request_id = "AL_NONE"
  al_source = "AL_NONE"
  al_request_id = "AL_NONE"
  al_request_guid = "AL_NONE"
  al_request_client_id = "AL_NONE"

  x_request_id = _payload[:headers][:HTTP_X_REQUEST_ID] if(_payload[:headers] && _payload[:headers][:HTTP_X_REQUEST_ID])
  #al_source = _payload[:headers][:HTTP_AL_SOURCE] if(_payload[:headers] && _payload[:headers][:HTTP_AL_SOURCE])
  #al_request_id = _payload[:headers][:HTTP_AL_REQUEST_ID] if(_payload[:headers] && _payload[:headers][:HTTP_AL_REQUEST_ID])
  #al_request_guid = _payload[:headers][:HTTP_AL_REQUEST_GUID] if(_payload[:headers] && _payload[:headers][:HTTP_AL_REQUEST_GUID])
  #al_request_client_id = _payload[:headers][:HTTP_AL_REQUEST_CLIENT_ID] if(_payload[:headers] && _payload[:headers][:HTTP_AL_REQUEST_CLIENT_ID])
  al_request_id = Thread.current["al_request_id"] if(Thread.current["al_request_id"])
  al_request_guid = Thread.current["al_request_guid"] if(Thread.current["al_request_guid"])
  al_source = Thread.current["al_source"]
  al_request_client_id = Thread.current["al_request_client_id"]




  { value: ((finished - started) * 1000).ceil , x_request_id: x_request_id, al_request_id: al_request_id, al_request_guid: al_request_guid, al_request_source_id: al_source, al_request_client_id: al_request_client_id}
end