Observability и Monitoring

Мы приступаем к завершающему этапу подготовки системы микросервисов - настройке централизованного сбора логов и метрик и организации мониторинга.

В уроке про Gateway Service мы настроили распределенную трассировку запросов с помощью Micrometer и Zipkin. В образовательных целях в этом уроке заменим Zipkin на Grafana Tempo, объединив все панели для наблюдения за состоянием микросервисов в одном месте - Grafana.

Стек технологий

Существует множество решений, позволяющих организовать процесс наблюдения за состоянием распределенной системы. Мы воспользуемся одним из наиболее популярных и распространенных на текущий момент стеком технологий:
  • Micrometer - инструментация микросервисов для получения метрик
  • Prometheus - сбор, аггрегация и хранение метрик
  • Tempo - распределенные трассировки
  • Loki - сбора и анализа логов
  • Grafana - визуализация данных (трассировок, метрик, логов)

Доступ после оплаты курса


Общая информация

  • Основные определения
  • Micrometer
  • Prometheus
  • Tempo
  • Loki
  • Grafana

Настройка микросервисов

  • Настройка Gateway Service
  • ДЗ: настройка остальных микросервисов

Настройка окружения в Docker Deployment

  • Prometheus
  • Tempo
  • Loki
  • Grafana

Запуск микросервисов и работа с дашбордами

  • Запуск микросервисов
  • Grafana, вкладка Explore
    • Логи
    • Трассировки
    • Метрики
    • Использование готовых панелей мониторинга
    • Дашборд для Kafka
    • Визуализация показателей Kafka Consumer
    • Визуализация показателей Kafka Producer

Итак, в этом уроке мы подробно рассмотрели три основных компонента в Monitoring and Observability: логи, трассировки и метрики. Также мы подняли и настроили инфраструктуру, необходимую для организации централизованного сбора, обработки и визуализации телеметрии с микросервисов и настроили сами микросервисы, чтобы они отдавали данные в нужном формате. Помимо этого мы воспользовались готовыми публичными дашбордами для визуализации метрик, а также подготовили свой дашборд для работы с данными о сотоянии Kafka Producers и Consumers.

Это завершающий урок курса, однако это вовсе не значит, что больше не над чем работать.

Идеи для развития проекта

  1. На текущий момент мы вручную управляем контейнерами с инфраструктурой и микросервисами, что не очень удобно, хотя и возможно, но до тех пор, пока количество микросервисов мало. В дальнейшем, если онлайн-кафе будет успешным, микросервисов может стать гораздо больше, поэтому потребуется система управления контейнерами. В современных реалиях де-факто стандартом такой системы является Kubernetes.
  2. Чтобы улучшить производительность, можно внедрить принципы CQRS (Command Query Responsibility Segregation) и Event Sourcing
  3. Также можно подумать над внедрением поиска по сайту с помощью мощного механизма, предоставляемого ElasticSearch.