Способы отслеживания недоступности микросервисов

есть несколько микросервисов, которые написаны на Spring Boot, а для общения используется Rabbit MQ. Общаются они через поставщика и потребителя (функциональные интерфейсы Supplier, Consumer). Реализовано на Spring Boot 3.2.0.

Как взаимодействуют понятно (в документации Spring Cloud Stream говорится что нужно использовать функциональные интерфейсы).

Вопрос в том какие есть способы отслеживания/понимания того что потребитель (Consumer) недоступен/выключен? Т.е. поставщик отправил сообщение в очередь Rabbit MQ, но потребитель не прочитал его по какой-то причине.

Какие способы для отслеживания таких ситуаций, чем они отличаются и какой способ лучше, если можно кратко опишите пожалуйста. Спасибо.


Ответы (1 шт):

Автор решения: tym32167

Не знаю, как это делается в Spring или Rabbit, но вообще у вас должна быть какая то система мониторинга, которая может

  • принимать данные о состоянии хостов от агентов, установленных на хостах, такие как CPU / Диск / Память
  • принимать данные от лоад балансеров, которые пингуют ваши хосты (у вас же есть deep ping или просто ping для проверки работы сервиса?)
  • принимать данные по отправленным / обработанным запросам / сообщениям
  • любые другие важные метрики, типа латенси, TPS, какие то ваши бизнес транзакции
  • и прочее

Обычно по этим метрикам строят всякие дашборды с графиками, и если какие то из метрик начинают выпадать, проходить через пороговые значения, типа латенси большой или сервис не пингуется или отношение отправленных/обработанных сообщений выше какого то значения за период времени, то у вас должна быть система оповещения о таких проблемах, которая вам тикет сделает и вызовет кого надо.

Этот подход вообще не зависит от того, на чем у вас сами сервисы написаны. Пока вы можете отправлять метрики в систему мониторинга, вы можете в реальном времени следить за системой и своемременно реагировать.

Я не знаю, какие сейчас для этого актуальны инструменты, но вот это гуглится первым в поиске https://grafana.com/about/grafana-stack/

→ Ссылка