class LogStash::Outputs::Coralogix

Public Instance Methods

configure() click to toggle source

This method is called before starting.

# File lib/logstash/outputs/coralogix.rb, line 62
def configure
  begin
    @loggers = {}

    # Overwrite Coralogix endpoint
    unless endpoint.nil?
      ENV["CORALOGIX_LOG_URL"] = "https://#{endpoint}/api/v1/logs"
      ENV["CORALOGIX_TIME_DELTA_URL"] = "https://#{endpoint}/sdk/v1/time"
    end

    require "centralized_ruby_logger"

    #If config parameters doesn't start with $ then we can configure Coralogix logger now.
    if !config_params["APP_NAME"].start_with?("$") && !config_params["SUB_SYSTEM"].start_with?("$")
      @logger = Coralogix::CoralogixLogger.new config_params["PRIVATE_KEY"], config_params["APP_NAME"], config_params["SUB_SYSTEM"], debug, "Logstash (#{version?})", force_compression, proxy
      @configured = true
    end
  rescue Exception => e
    $stderr.write "Failed to configure: #{e}"
  end
end
extract(record, key, default) click to toggle source
# File lib/logstash/outputs/coralogix.rb, line 84
def extract record, key, default
  begin
    res = record
    return key unless key.start_with?("$")
    key[1..-1].split(".").each do |k|
      res = res.fetch(k, nil)
      return default if res == nil
    end
    return res
  rescue Exception => e
    return default
  end
end
get_app_sub_name(record) click to toggle source
# File lib/logstash/outputs/coralogix.rb, line 99
def get_app_sub_name(record)
  app_name = extract(record, config_params["APP_NAME"], DEFAULT_APP_NAME)
  sub_name = extract(record, config_params["SUB_SYSTEM"], DEFAULT_SUB_SYSTEM)
  return app_name, sub_name
end
get_logger(record) click to toggle source
# File lib/logstash/outputs/coralogix.rb, line 105
def get_logger(record)

  return @logger if @configured && !@logger.nil?

  app_name, sub_name = get_app_sub_name(record)

  if !@loggers.key?("#{app_name}.#{sub_name}") || @loggers.fetch("#{app_name}.#{sub_name}", nil).nil?
    @loggers["#{app_name}.#{sub_name}"] = Coralogix::CoralogixLogger.new config_params["PRIVATE_KEY"], app_name, sub_name, debug, "Logstash (#{version?})", force_compression, proxy
  end

  return @loggers["#{app_name}.#{sub_name}"]
end
multi_receive(events) click to toggle source
# File lib/logstash/outputs/coralogix.rb, line 27
       def multi_receive(events)
  events.each do |record|
    record = record.to_hash

    logger = get_logger(record)

    log_record = log_key_name != nil ? record.fetch(log_key_name, record) : record
    log_record = (is_json ? log_record.to_json : log_record) rescue log_record
    log_record = log_record.to_s.empty? ? record : log_record

    timestamp = record.fetch(timestamp_key_name, nil)
    if (timestamp.nil?)
      logger.debug log_record
    else
      begin
        float_timestamp = DateTime.parse(timestamp.to_s).to_time.to_f * 1000
        logger.debug log_record, nil, timestamp: float_timestamp
      rescue Exception => e
        logger.debug log_record
      end
    end
  end

  return 1
end
register() click to toggle source
# File lib/logstash/outputs/coralogix.rb, line 23
       def register
  configure
end
version?() click to toggle source
# File lib/logstash/outputs/coralogix.rb, line 53
def version?
  begin
    Gem.loaded_specs['logstash-output-coralogix'].version.to_s
  rescue Exception => e
    return '1.0.0'
  end
end