class Ingest

Public Class Methods

new(company_name, access_id, access_key) click to toggle source
# File lib/ingest.rb, line 12
def initialize(company_name, access_id, access_key)
    @company_name = company_name
    @access_id = access_id
    @access_key = access_key
 end

Public Instance Methods

generate_token(events) click to toggle source
# File lib/ingest.rb, line 18
def generate_token(events)
   timestamp = DateTime.now.strftime('%Q')
   signature = Base64.strict_encode64(
       OpenSSL::HMAC.hexdigest(
           OpenSSL::Digest.new('sha256'),
           @access_key,
           "POST#{timestamp}#{events.to_json}/log/ingest"
       )
   )
   "LMv1 #{@access_id}:#{signature}:#{timestamp}"
 end
send_logs(events) click to toggle source
# File lib/ingest.rb, line 30
def send_logs(events)
  url = "https://#{@company_name}.logicmonitor.com/rest/log/ingest"
  body = events.to_json
  uri = URI.parse(url)
  
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  
  request = Net::HTTP::Post.new(uri.request_uri)
  request['authorization'] = generate_token(events)
  request['Content-type'] = "application/json"  
  request.body = body
  
  http.request(request)
end