Основной

Как мы мониторим аналитическую платформу в Авито

2025-06-01 13:53 Технологии Обзор
Виктор Ерёмченко рассказал в 2024 году про опыт эксплуатации аналитической системы в Авито, а мы делаем выжимку сути.

Контекст

Аналитическая платформа - решение, которое применяется, чтобы получить (аналитические) события (клики, просмотры страниц, события из кода), обработать (почистить, сгруппировать и тд), а затем отдать данные для последующего анализа.
Авито обрабатывает 40 млрд событий в сутки, хранит 1 Pb данных, к которым делают 1M запросов. Применяют ClickHouse, Vertica, Trino, Kafka, Vector, Graphite.
Пользователи аналитической платформы ожидают, что свежие данные будут доступны для работы максимально быстро. Идеально - сразу же, хорошо - если данные за вчера доступны сегодня.

Проблема

Статус платформы показывал, что все работает корректно, задержек поступления данных нет, при этом пользователи жаловались на недоступность свежих данных - "Когда будут данные доступны?"

Основные метрики Аналитической платформы/DWH

Классические 4 золотых сигнала (golden signals) для платформы работы с данными можно переформулировать так:

  • Готовность данных
  • Доступность данных
  • Полнота данных

Пользователь ожидает, что данные в аналитической платформе есть и их можно получить в любой момент. Все что ломает эти ожидания - можно оформить как метрики, за которыми следить.
Готовность данных
Предположим, что мы договорились, что данные за вчера будут готовы для использования на следующее утро в 9 утра. И тогда, если данные стали доступны в 10:30, а не в 9:00, то 1.5 часа - это время, когда данные были недоступны.
Это можно оформить в виде процента, если считать это время как недоступность. Тогда % uptime будет ниже желаемых 99.99% или иных процентов.
Доступность данных
Доступность показывает, может ли пользователь запросить и получить какие-либо данные из платформы. Можно считать, как доступность хранилища/хранилищ (Clickhouse, Vertica, etc). Это можно анализировать также, по времени простоя систем и переводить в проценты (или оставлять в часах).
Полнота данных
Пользователь ожидает, что все данные, которые были в источнике, попадут в платформу, а также, что все данные будут в том порядке, которые были в источнике.

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

Как собирать и хранить метрики платформы

Собирать метрики работы компонент платформы можно при помощи:
  1. Vector - который умеет обрабатывать как метрики, так и логи, а затем отправлять в место хранения
  2. Prometheus / VictoriaMetrics - стандартный стэк для сбора метрик (но не логов)
Vector для Виктора оказался отличным решением, который позволил переиспользовать Clickhouse хранилище. Воспользоваться Clickhouse как источником данных, так и хранилищем данных. А также не увеличивать количество технологий, которые нужно поддерживать.

Что еще было в докладе

  1. Как можно собирать статус и выявить зависшие запросы в Vertica
  2. Как автоматически завершать долгие запросы в Vertica при помощи обогащения Vector

Ссылке по теме