Yandex Observability Platform
📌 Платформа Observability помогает нашим пользователям легко и быстро получить однозначный ответ о состоянии своих систем в любой момент времени.
С приходом микросервисов, архитектура даже простых систем стала гораздо более распределенной. Чтобы понимать, что происходит в конкретный момент времени с сервисом, нужны подходящие инструменты, такие как:
- Метрики
- Трассировки запросов
- Логи
- Алерты и нотификации
- Графики и дашборды
И список на них не заканчивается, это только несколько основных блоков, которые образуют фундамент платформы Observability.
Немного цифр
🔥 Мониторинг
- Записываем 2 миллиарда точек в секунду
- или 12ГБ/с
- Храним 3.5 петабайт данных
- Рассчитываем 14 миллионов алертов
🔥 Трейсы
- Записываем 13 ГБ/с
- или 12 миллионов спанов в секунду
- Храним 600ТБ данных в оперативном хранилище
🔥 Логи
- Записываем 20 ГБ/с
- или 5 миллиона логов в секунду
- Храним 500ТБ данных в оперативном хранилище
Что входит в платформу
Monitoring
📊Monitoring— сервис для мониторинга инфраструктуры и приложений. Он обрабатывает 1.2 миллиарда точек на запись и 500 миллионов точек — на чтение ежесекундно, рассчитывает 10 миллионов алертов. Такие объёмы требуют решения сложных задач по масштабированию и отказоустойчивости.
Мониторинг активно развивается — им пользуется практически все команды Яндекса и внешние пользователи сервисов. Также, в скором времени Мониторинг станет drop-in replacement Prometheus, что позволит пользователям не думать о запуске собственных средств мониторинга. Само собой, что в такой системе нужно решать не только задачи простых чтения и записи данных, но и более сложные вещи, вроде работы с большим количеством уникальных таймсерий или хитрого service-discovery в пределах Облака.
Стек:
- Большая часть компонентов на Java.
- Небольшая часть на C++.
- Таймсерии хранятся в Yandex Database.
Logging
🪵Сервис, отвечающий за сбор и обработку логов наших клиентов и самих сервисов облака. Важный компонент инфраструктуры, который переваривает большую нагрузку и умеет растягивать свой сторадж до огромных размеров. Logging перенес несколько серьезных редизайнов архитектуры, и сейчас готов брать новые горизонты масштабирования. Кроме этого перед нами стоит задача развития функциональности Logging и встраивания его в единую платформу.
Стек:
- Пайплайн поставки данных на Go.
- Control plane на Java.
- Для хранения логов и настроек пользователей используется YDB и Clickhouse.
🔀 Tracing
Распределенная трассировка помогает точно определить, где происходят сбои и что вызывает низкую производительность.
По трейсам обычно не строят алерты и формат записи данных в систему жестко структурирован. Благодаря этому, становится возможным объединить все трейсы всех сервисов в одном представлении для пользователя, чтобы было проще разбираться в проблемах.
В данный момент, Трейсинг - внутренний сервис Облака и не предоставляется как продукт для пользователей. Но планирует стать публичным в будущем и уже сейчас предоставляет удобный интерфейс для дебага проблем смежных сервисов.
Стек:
- Пайплайн доставки и control plane на Go.
- В качестве стораджа трейсов используется ClickHouse, для настроек пользователей - YDB.
➕ И еще много чего
Также, в команде есть большое количество внутренних сервисов, которые помогают разработчикам Облака в day-to-day работе со своими приложениями, например:
- Система событийного мониторинга и активных проверок, которая позволяет следить за показателями своего сервиса через доставку сырых событий. Наиболее активно эта система используется для мониторинга железа, но не ограничивается этим.
- Unified Agent — агент для доставки телеметрии приложений.
Все эти сервисы хоть и меньше по объему, но не менее важны. Во всех стек по языкам примерно такой же:
- Много Go
- Чуть меньше Java.
- Unified Agent полностью на C++.
🚀 Вызовы, которые перед нами стоят
- Построение единой платформы, в которую легко, удобно и по общим принципам встраиваются другие сервисы, позволяющие пользователям быстро получать ответ о состоянии своих систем на основе всех имеющихся в платформе данных.
- Развитие новых для нас сервисов – логов и трейсов – и встраивание их в платформу.
- Упрощение порога входа для пользователей и решение популярных пользовательских сценариев из коробки. В качестве примеров можно привести автоматическую поставку метрик, дашбордов и алертов от сервисов, используемых пользователями, развитие коммьюнити и инструментов для шеринга популярных решений.
- Поддержка в платформе Open Source решений: Prometheus, Kubernetes, Grafana, популярные протоколы.
- Масштабирование наших решений, чтобы мы могли выдерживать нагрузки которые возрастают день изо дня
- И многое другое
🦾 Команда и процессы
📚 Проектами занимается команда сильных разработчиков и менеджеров, в совокупности наши инженеры своей экспертизой перекрывают весь спектр знаний, необходимый для таких технически сложных проектов: распределенные системы, алгоритмы, базы данных, сеть (мы сами умеем перекладывать ethernet-фреймы на go или java) и многое другое.
Используем в работе продуктовый подход - проводим custdev, собираем и анализируем метрики, делаем выводы и принимаем решения о развитии наших продуктов на основе полученных данных.
📟 Мы сами занимаемся эксплуатацией наших сервисов (devops), и поэтому самостоятельно влияем на простоту, удобство и надежность наших инфраструктурных процессов.
✈️ Переход между проектами платформы возможен без сложных формальностей. Процессы планирования разделены на отдельные треки по основным группам сервисов. Планирование устроено гибко, команды не придерживаются каких то строгих методологий, процессы стараются оставаться гибкими.
☎️ Откликнуться на вакансии
Если вас заинтересовало то, что мы делаем, и вы хотите присоединиться к нашей команде, то у нас есть несколько открытых вакансий:
💬 Выступления
Kuber Conf / 24
Monthly Cloud News 18: Observability Engineering
Вебинар: Managed Prometheus, 2023
about:cloud 2019, рассказ про Мониторинг
about:cloud / 24
Yandex Scale 2023
Yandex Scale 2021
HighLoad++ Siberia 2019, архитектура Мониторинга
📖 Публикации
Обновление кешей сервисов в реальном времени с помощью YDB CDC на примере Yandex Monitoring