Как команда VK Cloud выбирала хранилище для трейсов
Наблюдаемость в VK Cloud собирается из двух сервисов: метрики закрывает Мониторинг, а ошибки, логи и распределенные трейсы принимает Tracer — приложение из маркетплейса VK Cloud. Приложения отправляют в него данные о прохождении запросов, а разработчики затем разбирают ошибки и узкие места через привычные Jaeger UI и Grafana.
На Хабре архитектор PaaS VK Cloud Леонид Левин вместе с командой подробно рассказал, как под эту нагрузку выбирали хранилище.
У Jaeger формально есть шесть вариантов бэкенда, но после разбора требований реальных кандидатов осталось три:
🔹 Cassandra построена под быстрое чтение конкретного трейса по его ID, поиск по параметрам в ней идет через отдельные индексные таблицы
🔹 Elasticsearch построен под поиск: каждый спан при записи проходит индексацию, и под нее закладываются отдельные ресурсы
🔹 ClickHouse ложится на непрерывную запись больших объемов телеметрии и аналитические запросы. Мы выбрали его.
📊 В тестах связка с ClickHouse приняла до 362 тысяч спанов в секунду на четырех ядрах.
Но производительность была только частью задачи. Tracer работает с независимыми клиентами, поэтому данные каждого проекта нужно изолировать. Для этого команда добавила собственный приемник с аутентификацией, привязала каждый спан к проекту и поставила перед API прокси, который проверяет права пользователя.
➡️ В статье на Хабре — весь путь выбора хранилища, результаты нагрузочных тестов и схема мультитенантной архитектуры Cloud Tracing.
Наблюдаемость в VK Cloud собирается из двух сервисов: метрики закрывает Мониторинг, а ошибки, логи и распределенные трейсы принимает Tracer — приложение из маркетплейса VK Cloud. Приложения отправляют в него данные о прохождении запросов, а разработчики затем разбирают ошибки и узкие места через привычные Jaeger UI и Grafana.
На Хабре архитектор PaaS VK Cloud Леонид Левин вместе с командой подробно рассказал, как под эту нагрузку выбирали хранилище.
У Jaeger формально есть шесть вариантов бэкенда, но после разбора требований реальных кандидатов осталось три:
🔹 Cassandra построена под быстрое чтение конкретного трейса по его ID, поиск по параметрам в ней идет через отдельные индексные таблицы
🔹 Elasticsearch построен под поиск: каждый спан при записи проходит индексацию, и под нее закладываются отдельные ресурсы
🔹 ClickHouse ложится на непрерывную запись больших объемов телеметрии и аналитические запросы. Мы выбрали его.
📊 В тестах связка с ClickHouse приняла до 362 тысяч спанов в секунду на четырех ядрах.
Но производительность была только частью задачи. Tracer работает с независимыми клиентами, поэтому данные каждого проекта нужно изолировать. Для этого команда добавила собственный приемник с аутентификацией, привязала каждый спан к проекту и поставила перед API прокси, который проверяет права пользователя.
➡️ В статье на Хабре — весь путь выбора хранилища, результаты нагрузочных тестов и схема мультитенантной архитектуры Cloud Tracing.