В этой заметке собрана информация про мониторинг информационных систем и популярные методологии.
Любая система имеет тенденцию меняться. Как под воздействием внешних условий, например увеличением или уменьшением потока трафика, так и внутренних, например изменение кодовой базы.
Успешность сервиса напрямую зависит от способности своевременно реагировать на инциденты. Речь может идти, как о технических аспектах, масштабирование или восстановление при сбоях, так и напрямую к ним не относящихся, например быстрая проверка гипотез при разработке нового функционала. Следовательно нужно обеспечить прозрачность в понимании состояния системы на всех этапах жизненного цикла.
В индустрии закрепились термины - monitoring and observability .
Мониторинг
– создание, сбор, агрегирование и отображение количественных показателей системы (метрик), которые позволяют получить представление о состоянии системы.
Наблюдаемость
– это свойство системы, позволяющее делать выводы о внутреннем состоянии на основе её выходных данных.
Строится на сборе и анализе метрик и журналов, для микросервисных архитектур добавляется и распределенная трассировка запросов.
Мониторинг и оповещение позволяют системе вовремя сообщить о возникшей или ожидающейся неисправности. Если система не может справится с ней самостоятельно, то необходимо, чтобы человек проанализировал полученное оповещение, определил серьезность проблемы, нашел временное решение и затем выяснил основную причину проблемы.
Для эффективной работы системы ее развитие должно идти параллельно с развитием системы мониторинга (доклад ). Таким образом реализуя подход continuous monitoring .
Существует множество задач, решаемых с помощью мониторинга, включая следующие:
- Получение быстрой обратной связи на этапах разработки и развертывания систем
- Создание информационных панелей для отражения текущего/прошлого состояния системы
- Прогнозирование поведения системы в будущем
- Сравнение с предыдущими версиями
- Оповещение об инцидентах
- Формирование отчетов и последующий ретроспективный анализ данных
- Вопросы безопасности и аудита
Виды мониторинговых систем
На сегодняшний день типовой продукт представляет собой сложную, многоуровневую структуру, в которой каждый из уровней требует пристального внимания со стороны команд разработки и эксплуатации.
Условно такие системы можно поделить согласно уровневой модели BSA
(Base, Service, Application):
- Инфраструктурный слой(Base)
- Виртуальные машины, физические хосты, сеть, уровень оркестрации и т.д.
- Сервисный слой(Service)
- Балансировщики нагрузки, базы данныз, очереди сообщений и т.д.
- Слой приложения(Application)
- Производительность приложения (garbage collector, метрики runtime)
- Взаимодействие микросервисов между собой, с инфраструктурными сервисами, с внешними сервисами
- Бизнес-метрики
- Высокоуровневые показатели (кол-во пользователей, совершенных покупок, трассировка бизнес-процессов и т.д.)
Проектирование системы мониторинга
Будущая система мониторинга должна соответствовать требованиям, которые предъявляются к разрабатываемому сервису/приложению. Поэтому в начале требуется выявить потребности и проведя их анализ, разработать решение удовлетворяющее им.
Примерный алгоритм может выглядить так:
- Определить задачи решаемые приложением
- для чего оно разрабатывается, кто его пользователь
- кто будет поддерживать системы в дальнейшем
- Определить требования предъявляемые к системам приложения
- какие существуют ограничения к его функционированию
- требования к надежности
- Определить области требующие внедрения мониторинга
- Определить допустимые значения метрик
- Разработать runbook’и для решения возникающих проблем
The USE method
USE (Utilization, Saturation, Errors) - метод анализа производительности любой системы, представленный Бренданом Греггом , известным инженером и автором книг из Netflix. Он описывает создание контрольных списоков вопросов, которые могут использоваться для анализа производительности сервера, выявления узких мест и ошибок в ресурсах.
Метод начинается с постановки вопросов, а затем ищет ответы, вместо того, чтобы начинать с заданных показателей (частичные ответы) и пытаться работать в обратном направлении. Он предназначен для использования на ранних этапах исследования производительности для выявления системных узких мест.
Метод USE успешно использовался бесчисленное количество раз в различных корпоративных средах, учебных средах (как инструмент обучения), а в последнее время - в средах облачных вычислений.
Метод USE можно резюмироватьь как:
Для каждого ресурса проверьте утилизацию, насыщение и ошибки.
- Resource – все функциональные компоненты физического сервера (ЦП, диски, сеть, …)
- Utilization – среднее время, в течение которого ресурс был занят полезной работой. Либо, процент занятого “места” ресурса на данный момент
- Saturation – мера количества “отложенной” в очередь работы
- Errors – количество ошибок
The RED method
RED (Requests, Errors, Durations) - методология от Тома Уилки . Методология RED определяет три ключевых показателя, которые вы должны измерять для каждого микросервиса в вашей архитектуре. Эти показатели:
- Requests rate – количество запросов в интервал времени
- Errors – количество ошибок в интервал времени
- Duration – измерение времени запросов
Еще один приятный аспект метода RED заключается в том, что он помогает вам подумать о том, как создавать свои информационные панели. Вы должны сделать эти три метрики наиболее важными для каждой службы, а частота ошибок должна быть выражена как доля от частоты запросов.
Четыре золотых сигнала мониторинга
Четырьмя золотыми сигналами для мониторинга являются время отклика, величина трафика, уровень ошибок и степень загруженности.
- Время отклика (Latency) – время, которое требуется для выполнения запроса.
- Величина трафика (Traffic) – величина нагрузки, которая приходится на систему.
- Ошибки (Errors) – количество (или частота) неуспешного выполнения запросов (явно и неявно).
- Загруженность (Saturation) – показатель того, насколько полно загружен сервис.
Выводы
- Хорошая система мониторинга должна отвечать на два вопроса: что сломалось и почему.
- Построение любой системы начинается со сбора требований предъявляемых ей. Инструменты вторичны.
Дополнительные материалы
- The USE Method
- The RED Method
- SRE Book
- SRE Workbook
- How to Monitor the SRE Golden Signals
- Monitoring and Observability With USE and RED
- Мониторинг Postgres по USE и RED
- Для чего нужны «золотые сигналы» мониторинга и SRE?
- Основы распределённого мониторинга: четыре золотых сигнала
- The RED Method: A New Approach to Monitoring Microservices