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