From d7268befa853ac4a99f9d066c38330d4fc0bfc31 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sat, 7 Sep 2019 09:47:51 +0900 Subject: [PATCH] Add healthcheck endpoint for web (#11770) --- Gemfile | 1 + Gemfile.lock | 3 +++ app/controllers/application_controller.rb | 2 +- config/initializers/health_check.rb | 6 ++++++ config/routes.rb | 2 ++ docker-compose.yml | 4 ++-- 6 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 config/initializers/health_check.rb diff --git a/Gemfile b/Gemfile index 1cbf23cf21..d9740702fe 100644 --- a/Gemfile +++ b/Gemfile @@ -50,6 +50,7 @@ gem 'fastimage' gem 'goldfinger', '~> 2.1' gem 'hiredis', '~> 0.6' gem 'redis-namespace', '~> 1.5' +gem 'health_check', '~> 3.0' gem 'htmlentities', '~> 4.3' gem 'http', '~> 3.3' gem 'http_accept_language', '~> 2.1' diff --git a/Gemfile.lock b/Gemfile.lock index 8ecc8ebb75..b0f6bf083f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -278,6 +278,8 @@ GEM concurrent-ruby (~> 1.0) hashdiff (1.0.0) hashie (3.6.0) + health_check (3.0.0) + railties (>= 5.0) heapy (0.1.4) highline (2.0.1) hiredis (0.6.3) @@ -706,6 +708,7 @@ DEPENDENCIES fuubar (~> 2.4) goldfinger (~> 2.1) hamlit-rails (~> 0.2) + health_check (~> 3.0) hiredis (~> 0.6) htmlentities (~> 4.3) http (~> 3.3) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 5b343a276f..bd3d137743 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -41,7 +41,7 @@ class ApplicationController < ActionController::Base private def https_enabled? - Rails.env.production? + Rails.env.production? && !request.path.start_with?('/health') end def authorized_fetch_mode? diff --git a/config/initializers/health_check.rb b/config/initializers/health_check.rb new file mode 100644 index 0000000000..eece67b107 --- /dev/null +++ b/config/initializers/health_check.rb @@ -0,0 +1,6 @@ +HealthCheck.setup do |config| + config.uri = 'health' + + config.standard_checks = %w(database migrations cache) + config.full_checks = %w(database migrations cache) +end diff --git a/config/routes.rb b/config/routes.rb index 74a162f327..fe8425341a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,6 +10,8 @@ Rails.application.routes.draw do mount LetterOpenerWeb::Engine, at: 'letter_opener' if Rails.env.development? + health_check_routes + authenticate :user, lambda { |u| u.admin? } do mount Sidekiq::Web, at: 'sidekiq', as: :sidekiq mount PgHero::Engine, at: 'pghero', as: :pghero diff --git a/docker-compose.yml b/docker-compose.yml index 7406849663..20649e4245 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -43,7 +43,7 @@ services: - external_network - internal_network healthcheck: - test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:3000/api/v1/instance || exit 1"] + test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:3000/health || exit 1"] ports: - "127.0.0.1:3000:3000" depends_on: @@ -63,7 +63,7 @@ services: - external_network - internal_network healthcheck: - test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:4000/api/v1/streaming/health || exit 1"] + test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1"] ports: - "127.0.0.1:4000:4000" depends_on: