Rails 8 вводить вбудований ендпоінт для перевірки здоров’я з опцією придушення логів

image

Rails 8 презентує нову функцію, що значно полегшує моніторинг здоров'я вашого додатка: вбудований ендпоінт для перевірки здоров'я. Ця проста, але потужна функція допомагає розробникам впевнитися, що їхні додатки працюють коректно, без необхідності писати додатковий код.

Ендпоінт для перевірки здоров'я за замовчуванням доступний за адресою /up. Коли ви переходите за цим URL, система виконує базову перевірку вашого додатка. Якщо все працює належним чином, вона повертає статус 200 (успіх). Якщо з процесом запуску є проблеми, повертається статус 500 (помилка).

Однією з проблем з ендпоінтами для перевірки здоров'я є те, що вони можуть генерувати зайві записи в логах на виробничих середовищах. Інструменти, як Kamal, Kubernetes та балансувальники навантаження часто пінгують ці ендпоінти, іноді кожні кілька секунд, що може переповнити логи повторюваною інформацією. Для вирішення цієї проблеми Rails 8 вводить нову опцію конфігурації:

config.silence_healthcheck = path

Коли ви налаштовуєте цю опцію в конфігурації вашого додатка, Rails подавляє записи для запитів до вказаного шляху перевірки здоров'я. Це дозволяє тримати логи виробничого середовища чистими і зосередженими на реальних взаємодіях користувачів, а не на рутинних перевірках здоров'я.

Якщо ваш ендпоінт для перевірки здоров'я знаходиться за адресою /up, додайте таку конфігурацію:

В файлі config/environments/production.rb

config.silence_healthcheck = "/up"

Перевірки здоров'я необхідні для сучасних додатків, особливо тих, що працюють в хмарних середовищах. Вони дозволяють балансувальникам навантаження визначити, чи може ваш додаток отримувати трафік, оркестраційним системам контейнерів, як Kubernetes, дізнатися, чи здоровий ваш додаток, а також моніторинговим інструментам сповіщати вас, якщо додаток зупиниться. З придушенням логів ви отримуєте всі ці переваги без зайвих записів у логах від постійних запитів на перевірку здоров'я.

Якщо ви хочете використовувати інший URL шлях для перевірки здоров'я, ви можете легко змінити його в конфігурації маршрутів:

Rails.application.routes.draw do
get "healthz" => "rails/health#show", as: :railshealthcheck
end

Просто не забувайте оновити налаштування silence_healthcheck, щоб воно відповідало вашому власному шляху.

Важливо розуміти, що цей вбудований ендпоінт лише перевіряє, чи успішно завантажився ваш додаток. Він не моніторить стан зовнішніх залежностей, як-от бази даних чи сервери Redis. Якщо ваш додаток вимагає більш складних перевірок здоров'я, ви можете замінити базову перевірку на власну дію контролера, що виконуватиме більш детальні перевірки, специфічні для вашого додатка.

Francium Tech — технологічна компанія, що спеціалізується на створенні програмного забезпечення високої якості, масштабованого та швидкого. Великі обсяги даних нас не лякають. Якщо у вас є вимоги або ви хочете безкоштовно перевірити стан своїх систем чи архітектури, не соромтеся надіслати лист на [email protected] — ми зв'яжемося з вами!

Перекладено з: Rails 8 Introduces Built-in Health Check Endpoint with Log Silencing Option