Мониторинг в микросервисах: как определить, выходит из строя внутренняя / внешняя служба в архитектуре микросервисов

В архитектуре микросервисов я хотел бы обнаруживать и генерировать предупреждение на основе порогового значения, когда служба выходит из строя. Мне было интересно использовать для каждого микросервиса на стороне клиента автоматический выключатель для отправки информации при переключении цепи и для создания предупреждения, связанного с состоянием «неработоспособно» цели. Но я не делаю этого, если это хороший образец. Более того, у меня есть две проблемы: первая - отслеживать микросервисы и агрегировать их данные для генерации предупреждения при достижении порога, а вторая - делать то же самое со сторонними сервисами (внешними сервисами), используемыми микросервисами на шлюзе. . По вашему мнению, как лучше всего отслеживать микросервисы? Спасибо


person jonn    schedule 02.01.2021    source источник


Ответы (1)


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

Так что, если ваша служба, вероятно, восстановится за короткий промежуток времени, вы можете использовать автоматический выключатель.

В противном случае, как я думаю, здесь так и есть (потому что вы хотите, чтобы предупреждение запускалось, когда служба не работает), я бы сосредоточил больше на причинах, по которым этот микросервис не работает, и я бы попытался свести к минимуму вероятность возникновения.

Если вы используете Kubernetes, вы можете отслеживать микросервисы с помощью Prometheus. Вот хорошая статья, с которой можно начать. Prometheus очищает API Kubernetes и предоставляет метрики, связанные с модулями. Вы можете создать оповещение на основе тех.

Для мониторинга внешних сервисов вы также можете использовать для этого Prometheus. Если внешний сервис может предоставлять метрики через Prometheus, вы просто подключаете его, и все готово. В противном случае вам придется написать код, чтобы проверить работоспособность этой службы и выставить метрику на ее основе.

person Cosmin Ioniță    schedule 02.01.2021
comment
Спасибо. Что касается внутренних служб, я действительно считаю, что использовать Prometheus - хорошая идея. Итак, что касается внешних служб, поскольку это не в моих руках, я подумал использовать автоматический выключатель в шлюзе для обнаружения запросов об отказе, отправленных во внешнюю сеть, как это имеет место в некоторых балансировщиках нагрузки, но возможно ли это? Это хорошая практика? - person jonn; 03.01.2021
comment
Да, для внешних служб вы можете использовать автоматический выключатель, чтобы убедиться, что они могут своевременно восстанавливаться. Я не уверен, что балансировщики нагрузки могут это сделать. Я бы сказал, что лучше всего использовать автоматический выключатель внутри самого приложения. Таким образом, вы можете контролировать его и получить больше гибкости. - person Cosmin Ioniță; 03.01.2021