Class: Ingest

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

Instance Method Summary collapse

Constructor Details

#initialize(company_name, access_id, access_key) ⇒ Ingest

Returns a new instance of Ingest.



12
13
14
15
16
# 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

Instance Method Details

#generate_token(events) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# 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) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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