43 lines
1.3 KiB
Ruby
43 lines
1.3 KiB
Ruby
|
#!/usr/bin/env ruby
|
||
|
# frozen_string_literal: true
|
||
|
|
||
|
require_relative 'lib/baktainer'
|
||
|
|
||
|
# Health check server runner
|
||
|
class HealthServerRunner
|
||
|
def initialize
|
||
|
@dependency_container = Baktainer::DependencyContainer.new.configure
|
||
|
@logger = @dependency_container.get(:logger)
|
||
|
@health_server = @dependency_container.get(:health_check_server)
|
||
|
end
|
||
|
|
||
|
def start
|
||
|
port = ENV['BT_HEALTH_PORT'] || 8080
|
||
|
bind = ENV['BT_HEALTH_BIND'] || '0.0.0.0'
|
||
|
|
||
|
@logger.info("Starting health check server on #{bind}:#{port}")
|
||
|
@logger.info("Health endpoints available:")
|
||
|
@logger.info(" GET / - Dashboard")
|
||
|
@logger.info(" GET /health - Health check")
|
||
|
@logger.info(" GET /status - Detailed status")
|
||
|
@logger.info(" GET /backups - Backup information")
|
||
|
@logger.info(" GET /containers - Container discovery")
|
||
|
@logger.info(" GET /config - Configuration (sanitized)")
|
||
|
@logger.info(" GET /metrics - Prometheus metrics")
|
||
|
|
||
|
begin
|
||
|
@health_server.run!(host: bind, port: port.to_i)
|
||
|
rescue Interrupt
|
||
|
@logger.info("Health check server stopped")
|
||
|
rescue => e
|
||
|
@logger.error("Health check server error: #{e.message}")
|
||
|
raise
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Start the server if this file is run directly
|
||
|
if __FILE__ == $0
|
||
|
server = HealthServerRunner.new
|
||
|
server.start
|
||
|
end
|