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