Video thumbnail

    Виктор Ерёмченко. Ключевые метрики стабильности,или Как мы мониторим аналитическую платформу в Авито

    Valuable insights

    1.Ключевые метрики стабильности платформы: Основная ценность для пользователей заключается в своевременном получении данных, поэтому критически важны метрики времени готовности данных и доступности компонентов системы.

    2.Архитектура аналитической платформы Авито: Платформа обрабатывает петабайты данных, используя три основных движка: Vertica, ClickHouse и Trina, с ежедневной работой более 300 аналитиков.

    3.Проблемы с исходными метриками: Первоначальные метрики не показывали реального состояния, что приводило к значительным простоям, суммарно достигавшим 240 часов отставания данных за квартал.

    4.Внедрение Vector и ClickHouse для мониторинга: Для сбора, форматирования и долгосрочного хранения метрик и логов была внедрена архитектура на основе Vector как скрепера и ClickHouse как хранилища.

    5.Борьба с ложными срабатываниями в Vertica: Для устранения ложных алертов при падении нод Vertica используется механизм обогащения метрик в Vector, проверяющий фактический статус процессов.

    6.Отказоустойчивость достигается на уровне приложения: Решение о повышении устойчивости к сбоям базы данных было принято на стороне приложения, которое научилось автоматически обрабатывать падения нод.

    7.Автоматизация и минимизация ручного труда: Автоматическое решение проблем, например, обработка падений сессий из-за потребления памяти, позволяет минимизировать затраты людей и обеспечить ночную стабильность.

    8.Значительное улучшение показателей стабильности: В результате внедренных изменений удалось свести к нулю недоступность основного кластера и сократить отставание данных с 240 до 150 часов за квартал.

    Введение и архитектура аналитической платформы

    Специалист, отвечающий за стабильность платформы в Авито, представил доклад, посвященный ключевым метрикам стабильности и методам мониторинга аналитической платформы. Основная задача платформы заключается в получении, обработке и предоставлении данных пользователям. В основе системы лежат три движка: Vertica, ClickHouse и Trina. При этом Vertica играет наиболее массивную роль, храня основную часть данных.

    Масштабы и источники данных

    Платформа оперирует объемом данных, превышающим один петабайт, полученным от различных сервисов и баз данных, включая PostgreSQL, MySQL и MongoDB, а также из Kafka Stream. Ежедневно более 300 аналитиков используют эти данные, генерируя суммарно более миллиона SQL-запросов к платформе.

    • Источники данных (базы, API, CSV, Sheets) генерируют данные.
    • Данные загружаются в сыром виде в хранилище (DW).
    • Происходит обработка, дедупликация и расчет витрин, обогащающих данные.

    Ожидания пользователей и метрики готовности

    Существуют четкие ожидания по готовности данных: критичные данные должны быть доступны к 9:00 утра, важные — к 10:00, а все остальные — к 12:00. Поскольку это аналитическая платформа, данные загружаются с задержкой в один день (день -1). Однако, несмотря на это, в некоторых случаях пользователи сообщали об отсутствии данных, хотя внутренние метрики системы не фиксировали проблем.

    Выбор ключевых метрик стабильности

    Для решения проблемы были выбраны две основные метрики: время готовности данных и доступность компонентов. Время готовности измеряется как простой платформы, если данные не готовы к установленному сроку (например, 30 минут задержки приравниваются к 30 минутам недоступности). Доступность компонентов касается возможности аналитиков выполнять запросы к хранилищам.

    Отказоустойчивости баз не существует, потому что любая отказоустойчивость — это какой-то минимальный downtime, и всегда нужно быть к этому готовы.

    Первоначальный расчет этих метрик показал серьезные проблемы: за квартал было зафиксировано суммарно 240 часов отставания данных и около 40 часов недоступности Vertica, основного компонента хранения.

    Новая архитектура мониторинга на базе Vector и ClickHouse

    Для сбора метрик первоначально использовались общедоступные инструменты Авито, такие как Grafana, данные о выполнении приложений и внутренняя информация Vertica. Были сформулированы требования к новой системе: переиспользование существующих компонентов, гибкость в написании кастомных метрик и долгое хранение данных. В итоге выбор пал на ClickHouse для хранения и Vector для обработки.

    Роль Vector в сборе метрик

    Vector выполняет роль сборщика (скрепера) и форматировщика метрик, приводя их в нужный вид и обогащая. Он также может генерировать кастомные метрики. Дополнительно Vector дублирует метрики в Grafana, вписываясь в существующую архитектуру.

    • Возможность масштабирования, так как он уже используется в платформе.
    • Долгое хранение данных с возможностью легкого расширения.
    • Использование SQL для построения красивых дашбордов.
    Характеристика
    Преимущество
    Производительность
    Показал высокую производительность при сборе логов Vertica.
    Развертывание
    Гибкое: как сайдкары в Kubernetes или в виде пакетов на железе.
    Функционал
    Может работать как роутер или скрепер, имеет встроенный механизм тестирования конфигураций.

    Мониторинг Vertica и повышение надежности

    При мониторинге доступности Vertica, которая является отказоустойчивой базой, падение одной ноды переключает нагрузку на реплику. Однако это может влиять на загрузку данных и SQL-запросы. Системная таблица Vertica для проверки статуса нод может отвечать долго под высокой нагрузкой, вызывая ложные срабатывания (false positives) алертов.

    Устранение ложных срабатываний

    Для борьбы с ложными срабатываниями было решено обогащать метрику внутри Vector. Дополнительно собирается информация о запущенных процессах и времени работы процессора на каждой ноде. Если Vertica не отдает статус, но процесс запущен, нода считается доступной, что сократило количество лишних алертов для дежурного.

    Решение проблем с потреблением памяти

    Другой проблемой является потребление памяти пользовательскими функциями, написанными на Python, которые могут быть неоптимальными. Когда срабатывает киллер и убивает процесс из-за высокого потребления памяти, это также убивает Vertica. Vector используется для обогащения метрики потребления памяти, добавляя номер сессии, что позволяет дежурному выполнить команду `kill session` и решить проблему вручную, хотя полное автоматическое решение в этом кейсе не было принято.

    Отказоустойчивость приложения и автоматизация

    При падении ноды Vertica пропадают локальные временные таблицы, что приводит к падению загрузок или расчетов витрин, влияя на время готовности данных. Возникает дилемма: исправлять отказоустойчивость на стороне базы данных или на стороне приложения. Выбран подход повышения отказоустойчивости самого приложения.

    Обработка ошибок на стороне приложения

    Каждая ошибка обрабатывается индивидуально: для одних требуется перезапуск этапа загрузки или сброс сессии, для других — перезапуск всего потока расчета витрины. Приложение было доработано так, чтобы при падении ноды базы данных все отрабатывалось автоматически, что минимизировало влияние на время готовности. Около 40% инцидентов было связано с падением нод до внесения изменений.

    • Максимально минимизировать затраты людей при автоматизации.
    • Инвестировать в будущее, освобождая время для развития платформы.
    • Приложение должно быть готово к недоступности базы данных.
    Если вы хотите, чтобы ваши данные были прямо у вас супер критичные данные и вы хотите готовность их раньше, чем на это время, давайте переезжать в три изолированный контур.

    Достигнутые результаты и планы развития

    В результате предпринятых мер удалось добиться значительного улучшения показателей. На основном кластере Vertica время даунтайма было сведено к нулю, хотя падения отдельных нод все еще происходят. На втором кластере, с которым работают пользователи, наблюдается частичная деградация из-за неоптимальных запросов, которые могут завалить весь кластер.

    Улучшение времени готовности данных

    Помимо повышения устойчивости приложений, была проведена миграция части данных в Trina, что позволило освободить ресурсы Vertica для оставшихся расчетов. Это привело к снижению общего числа инцидентов и сокращению времени расчета. Отставание данных снизилось с 240 часов до 150 часов за квартал, при целевом показателе в 120 часов.

    Метрика
    Исходное значение
    Финальное значение
    Цель
    Отставание данных
    240 часов
    150 часов
    120 часов
    Недоступность Vertica (основной кластер)
    40 часов
    0 часов
    0 часов

    В планах развития — создание единой точки входа для пользователей, отображающей статус платформы и метрики готовности, чтобы исключить обращение пользователей в чаты с вопросами о статусе данных. Также планируется анализ рискованных запросов на ранних стадиях, чтобы отбивать их до начала выполнения на Vertica.

    Вопросы и ответы: Жизненный цикл метрик

    В секции вопросов обсуждался жизненный цикл метрик. Метрики, добавленные командой, выводятся из эксплуатации, если они становятся неактуальными, чтобы сократить потребление ресурсов ClickHouse. Например, логи Vertica (до 500 ГБ в день) хранятся не более 3 месяцев, так как этого достаточно для расследования инцидентов.

    Приоритизация и поддержка сервиса

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

    • ИИ может помочь решать простые и типовые задачи мониторинга.
    • Для специфичных инфраструктур требуется больше данных для обучения ИИ.
    • ИИ может анализировать алерты ночью для принятия решений о дальнейших действиях.

    Useful links

    These links were generated based on the content of the video to help you deepen your knowledge about the topics discussed.

    This article was AI generated. It may contain errors and should be verified with the original source.
    VideoToWordsClarifyTube

    © 2025 ClarifyTube. All rights reserved.