Попробуйте решить эту задачу самостоятельно
Практикуйтесь с интерактивными подсказками и моментальной обратной связью
Постановка задачи
📊 Что такое платформа мониторинга метрик?
Платформа мониторинга метрик собирает данные о производительности - CPU, память, пропускную способность, задержку и пользовательские счетчики - от серверов и сервисов, хранит их как данные временных рядов, показывает на дашбордах и запускает оповещения (alerts) при нарушении порогов.
Представьте Datadog, Prometheus/Grafana или AWS CloudWatch. Это инфраструктура, на которую инженеры опираются, чтобы отслеживать состояние системы и быстро реагировать на инциденты.
Функциональные требования
Начнем с требований, которым система должна удовлетворять. На первый взгляд задача кажется простой: собирать метрики, хранить их, выполнять запросы и запускать оповещения. Но на практике здесь много скрытых сложностей, поэтому важно сразу сузить рамки обсуждения.
Основные требования
- Платформа должна получать метрики от сервисов: CPU, память, задержка и пользовательские счетчики.
- Пользователи могут запрашивать и визуализировать метрики на дашбордах с фильтрами, агрегациями и выбором временного диапазона.
- Пользователи могут задавать правила оповещений с порогами на временных окнах, например: "запустить оповещение, если p99 задержка > 500 мс в течение 5 минут".
- Пользователи должны получать уведомления, когда оповещения срабатывают: по email, в Slack и других каналах.
За рамками задачи
- Агрегация логов и полнотекстовый поиск.
- Распределенная трассировка со спанами.
- Поиск аномалий с помощью машинного обучения.
Нефункциональные требования
Платформы мониторинга могут работать как для сервисов одной команды, так и для парка из сотен тысяч серверов. Очень важно быстро договориться о масштабе, потому что именно он определяет почти все архитектурные решения.
Предположим, интервьюер говорит: "нам нужно мониторить 500 000 серверов". Это
уже серьезный масштаб. Если каждый сервер отправляет 100 метрик каждые 10
секунд, мы получаем пиковую нагрузку 5 млн метрик в секунду. Каждая точка
данных небольшая - временная метка (timestamp), значение (value) и метки
(labels), примерно 100-200 байт. Но на таком объеме это уже около 1 ГБ в
секунду сырых входящих данных. В этом и состоит основная сложность задачи.
Основные требования
- Система должна масштабироваться до 5 млн метрик в секунду от 500 000 серверов.
- Запросы для дашбордов должны исполняться за секунды, даже если пользователь смотрит на данные за дни или недели.
- Оповещения должны вычисляться с низкой задержкой: менее 1 минуты от появления метрики до срабатывания оповещения.
- Система должна быть высокодоступной. Для дашбордов допустима согласованность в конечном счете, но вычисление оповещений должно быть надежным.
- Система должна корректно обрабатывать запаздывающие или пришедшие не по порядку данные - сетевые задержки являются обычным явлением.
За рамками задачи
- Мультирегиональная репликация.
- Строгие гарантии согласованности.
На доске раздел с нефункциональными требованиями может выглядеть примерно так:
Требование "оповещение должно сработать меньше чем за минуту" некоторым может показаться слишком медленным. Возникает вопрос: "разве мы не хотим запускать оповещение сразу, как только случилась проблема?". И да, и нет.
В большинстве производственных систем событие невозможно надежно определить мгновенно, пока не накопилось достаточно данных. Очень часто оповещения разумно строятся на скользящих средних, трендах или окнах наблюдения.
Если же оповещение действительно нужно запускать почти мгновенно, его обычно строят особым способом. Например, Amazon отслеживает падение числа заказов по метрике "сколько миллисекунд прошло с прошлого заказа". Заказов у них так много, что эта величина очень стабильна и позволяет почти сразу заметить аномалию.
Проектирование таких метрик - отдельное искусство, но обычно это не главный фокус для подобного интервью. Хотя могут быть интервьюеры, которые хотят построить систему потоковой обработки событий, мы не будем начинать именно с этого.
Перейдите на Premium, чтобы продолжить
Разблокируйте доступ к этой статье и всем остальным материалам с NowInterview Premium
Перейти на Premium