lib/liquid/server.rb in liquid-ext-3.4.2 vs lib/liquid/server.rb in liquid-ext-3.5.0
- old
+ new
@@ -2,13 +2,20 @@
require 'liquid/metrics'
require 'liquid/tracker'
module Liquid
class Server
+ attr_reader :started_at
+
+ def name
+ @name ||= self.class.name.downcase.gsub(/::/, '.')
+ end
+
def initialize
- $log.info("#{self.class.name.downcase} #{RUBY_DESCRIPTION}")
- $log.info("#{self.class.name.downcase}", env: Env.mode)
+ @started_at = Time.now
+ $log.info("#{name} #{RUBY_DESCRIPTION}")
+ $log.info("#{name}", env: Env.mode)
Signal.register_shutdown_handler { System.exit(0) }
Signal.register_shutdown_handler { ZContext.destroy }
initialize_raven
initialize_tracker
initialize_metrics
@@ -39,13 +46,35 @@
$tracker = ::Tracker::LoggerTracker.new($conf.tracker.dimensions)
end
Signal.register_shutdown_handler { $tracker.shutdown }
end
+ class HealthGauge
+ include Gauge
+
+ def getValue
+ HealthCheck.healthy? ? 1 : 0
+ end
+ end
+
+ class UptimeGauge
+ include Gauge
+
+ def initialize(server)
+ @server = server
+ end
+
+ def getValue
+ @server.uptime.to_i
+ end
+ end
+
def initialize_metrics
::Metrics.start
::Metrics::TrackerReporter.new($tracker.with_topic('metrics'))
+ ::Metrics.gauge("#{name}.healthy", HealthGauge.new)
+ ::Metrics.gauge("#{name}.uptime", UptimeGauge.new(self))
Signal.register_shutdown_handler { ::Metrics.stop }
end
def initialize_health_checks
Thread.new do
@@ -63,9 +92,13 @@
end
def run
# by default wait for all workers
Thread.join
+ end
+
+ def uptime
+ Time.now - @started_at
end
end
end
end