coralogix_logger 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c6cd392cb48af14a79cb7cf58d901c7d4e1b976e
4
- data.tar.gz: db4691005c5c7d2056c24ab830d2225ba46d0157
3
+ metadata.gz: d79ae660063e583a61b3a6033f9cc28e247d85bb
4
+ data.tar.gz: 47599e3e7f0d052839223b54d55df4987180ab2c
5
5
  SHA512:
6
- metadata.gz: 955a9052ecceab5a80b59630272fb04ad09920c3488783f9c7530ec940ad873461720fde9a35716eb83a92bc0b7b3af5c860593c0b776f88d48cdf47f5d0853b
7
- data.tar.gz: 63d0f88dc5404058e9ed03d659f79ec0fd21b7589f6f1f4b4c6e4e5bb989b43e210e6c0d099f5f97eb5883a557e22d8ab29272e326a5156c945ff9363e9f2018
6
+ metadata.gz: 3b1bf87bed18fffbb29a03ecfeacf46c358c24d9e64e3a9e71e0dda9bfb05fca639216d0497be9543d35dc3589ac52442faa5b3fce5f4f7e2d0e5035ff3370f2
7
+ data.tar.gz: e42f79bd33f8229e6fc4c17c9f7071f1f12124fad23f403d2568ad5ebd660ff4a5e81e6492edb74e7823c6856bcce7456fd7d211a369f882d7e1992401b55486
data/lib/constants.rb CHANGED
@@ -29,6 +29,9 @@ module Coralogix
29
29
  #Coralogix logs url
30
30
  CORALOGIX_LOG_URL = "https://api.coralogix.com:443/api/v1/logs"
31
31
 
32
+ #Coralogix time delat url
33
+ CORALOGIX_TIME_DELTA_URL = "https://api.coralogix.com:443/sdk/v1/time"
34
+
32
35
  #Default private key
33
36
  FAILED_PRIVATE_KEY = "9626c7dd-8174-5015-a3fe-5572e042b6d9"
34
37
 
data/lib/httpsender.rb CHANGED
@@ -8,7 +8,7 @@ require 'benchmark'
8
8
  module Coralogix
9
9
  # @private
10
10
  module CoralogixHTTPSender
11
-
11
+ TICKS_IN_SECOND = 10**7
12
12
  @initialized = false
13
13
 
14
14
  def CoralogixHTTPSender.disable_proxy value
@@ -23,10 +23,8 @@ module Coralogix
23
23
  begin
24
24
  @uri = URI(CORALOGIX_LOG_URL)
25
25
  if(@disable_proxy)
26
- #@http = Net::HTTP.start(@uri.host, @uri.port, p_addr=nil, p_port=nil, :use_ssl => true, :verify_mode=> OpenSSL::SSL::VERIFY_NONE)
27
26
  @http = Net::HTTP.new(@uri.host, @uri.port, p_addr=nil, p_port=nil)
28
27
  else
29
- #@http = Net::HTTP.start(@uri.host, @uri.port, :use_ssl => true, :verify_mode=> OpenSSL::SSL::VERIFY_NONE)
30
28
  @http = Net::HTTP.new(@uri.host, @uri.port)
31
29
  end
32
30
  @http.use_ssl = true
@@ -68,6 +66,36 @@ module Coralogix
68
66
  sleep HTTP_SEND_RETRY_INTERVAL
69
67
  end
70
68
  end
69
+
70
+ # A helper method to get coralogix server current time and calculate the time difference
71
+ #
72
+ # @return [float] - time delta
73
+ def CoralogixHTTPSender.get_time_sync
74
+ self.initialize unless @initialized
75
+ begin
76
+ DebugLogger.info "Syncing time with coralogix server"
77
+ res = @http.get(CORALOGIX_TIME_DELTA_URL)
78
+
79
+ if res.is_a?(Net::HTTPSuccess) && !res.body.to_s.empty?
80
+ #Get server ticks from 1970
81
+ server_ticks = res.body.to_i.to_s # Relative to 1970
82
+ #Take the first 13 digits
83
+ server_ticks = server_ticks[0..12]
84
+ #Convert the ticks to utc time
85
+ server_time = Time.parse(Time.at(server_ticks.to_i / 1000.to_f).strftime('%H:%M:%S.%L')).utc
86
+ local_time = Time.now.utc
87
+
88
+ time_delta = (server_time - local_time) * 1000.0
89
+ DebugLogger.info "Updating time delta to: #{time_delta}"
90
+ return true, time_delta
91
+ end
92
+ return false, 0
93
+ rescue Exception => e
94
+ DebugLogger.error e.message
95
+ DebugLogger.error e.backtrace.inspect
96
+ return false, 0
97
+ end
98
+ end
71
99
  end
72
100
 
73
101
  end
data/lib/manager.rb CHANGED
@@ -18,6 +18,8 @@ module Coralogix
18
18
  @buffer_size = 0
19
19
  @bulk_template = {:privateKey => FAILED_PRIVATE_KEY, :applicationName => FAILED_APP_NAME, :subsystemName => FAILED_SUB_SYSTEM}
20
20
  @mutex = Mutex.new
21
+ @time_delta_last_update = 0
22
+ @time_delta = 0
21
23
  self.run
22
24
  end
23
25
 
@@ -52,7 +54,7 @@ module Coralogix
52
54
  @mutex.synchronize do
53
55
  if @buffer_size < MAX_LOG_BUFFER_SIZE
54
56
  #Combine a logentry from the must parameters together with the optional one.
55
- new_entry = {:text => message, :timestamp => Time.now.utc.to_f * 1000, :severity => severity, :category => category}.merge(args)
57
+ new_entry = {:text => message, :timestamp => Time.now.utc.to_f * 1000 + @time_delta, :severity => severity, :category => category}.merge(args)
56
58
  @buffer << new_entry
57
59
  #Updte the buffer size to reflect the new size.
58
60
  @buffer_size+=new_entry.to_json.bytesize
@@ -71,6 +73,8 @@ module Coralogix
71
73
  # Send bulk from the buffer
72
74
  def self.send_bulk
73
75
  begin
76
+ self.update_time_delta_interval
77
+
74
78
  @mutex.synchronize do
75
79
  # Total buffer size
76
80
  size = @buffer.size
@@ -96,6 +100,23 @@ module Coralogix
96
100
  end
97
101
  end
98
102
 
103
+ # Sync log timestamps with coralogix server
104
+ def self.update_time_delta_interval
105
+ begin
106
+ #If more than 5 seconds passed from the last sync update
107
+ if ((DateTime.now.strftime('%Q').to_i - @time_delta_last_update) / 1000) >= 300 #5 minuts
108
+ res, _time_delta = CoralogixHTTPSender.get_time_sync
109
+ if res
110
+ @time_delta = _time_delta
111
+ @time_delta_last_update = DateTime.now.strftime('%Q').to_i
112
+ end
113
+ end
114
+ rescue Exception => e
115
+ DebugLogger.error e.message
116
+ DebugLogger.error e.backtrace.inspect
117
+ end
118
+ end
119
+
99
120
  # Start timer execution.
100
121
  # The timer should send every X seconds logs from the buffer.
101
122
  def self.run
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coralogix_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Royee Goldberg