Разработчик в Monium Agent
Unified Agent — это ключевой компонент инфраструктуры Яндекса для сбора и обработки данных. Он работает как универсальный коллектор, интегрируясь с различными сервисами и обеспечивая полный цикл обработки информации: от сбора логов и метрик до их передачи в централизованные системы мониторинга.
Ключевые особенности агента:
- Гибкий язык конфигурирования для настройки потоков данных
- Модульная архитектура с богатой системой плагинов
- Возможность гибкой маршрутизации данных между источниками, фильтрами и получателями
- Локальная буферизация для обеспечения надёжности
Техническая часть:
- Современный C++20, асинхронное взаимодействие компонентов, использование coroutine
- Поддержка различных сетевых протоколов: gRPC, HTTP(S) v1/v2, Unix domain sockets
- Интеграция с OpenTelemetry, использование Asio, protobuf
- TDD; СI/CD; тестовый стенд; релиз версии раз в две недели, когда заканчивается спринт
Масштаб использования впечатляет: Unified Agent развернут в 2 млн контейнеров в инфраструктуре Яндекса с общим трафиком порядка 1 ТБ/с и является основным инструментом сбора метрик в Yandex Cloud. Это решение конкурирует с такими популярными инструментами, как Fluentd, Logstash, Amazon CloudWatch Agent и Datadog Agent.
Проект активно развивается: мы планируем открыть исходный код и сделать его опенсорс-решением. Для вас это отличная возможность присоединиться к команде на раннем этапе и внести свой вклад в формирование архитектуры и функциональности!
Вот небольшая часть вызовов, которые стоят перед командой разработчиков Unified Agent:
- Мгновенная передача логов
В инфраструктуре Яндекса расположено множество распределённых серверов, а получение доступа к консоли занимает значительное время. Поэтому требуется возможность мониторить логи с различных серверов быстро, в режиме реального времени.
- Разработка интеллектуальной системы диагностики
Невозможно мониторить 2 млн хостов вручную, равно как и выявлять проблемы традиционными методами. Учитывая, что сбор метрик и дополнительных логов существенно увеличивает сетевой трафик, в агенте должна быть интеллектуальная система диагностики, которая не только заранее обнаруживает на серверах неполадки, но и предлагает, как их исправить.
- Высокая надёжность
Если что-то идёт не по плану — Unified Agent становится ключевым инструментом диагностики. Поэтому критически важно, чтобы агент мог продолжать работу даже при сбоях в системе, обеспечивая доставку логов и метрик независимо от обстоятельств.
Присоединяйтесь к разработке инструмента, который играет важнейшую роль в управлении инфраструктурой и её мониторинге в одной из крупнейших технологических компаний!
Задачи и обязанности
Разрабатывать высоконагруженные компоненты на C++
Агент функционирует как многомодульная система, где каждый модуль отвечает за сетевое взаимодействие и операции с файловой системой. Чтобы оптимизировать использование ресурсов, все операции выполняются через общие компоненты, которые создаёт и улучшает команда разработчиков.
Оптимизировать производительность при работе с большими объёмами данных
Система непрерывно получает на вход значительные потоки данных, оптимально обрабатывает их и надёжно передаёт на серверы сбора метрик. Нужно создавать эффективные сценарии обработки, тщательно контролируя пропускную способность и производительность всей системы, профилировать и оптимизировать важные участки кода.
Разрабатывать надёжное сетевое взаимодействие компонентов системы
Агент обеспечивает взаимодействие с множеством клиентов и обменивается данными с серверами. При этом система должна эффективно управлять входящим потоком данных, превышающим возможности обработки, и соблюдать серверные квоты, не допуская перегрузки инфраструктуры.
При создании сетевых протоколов необходимо реализовывать механизмы контроля нагрузки и балансировки трафика, чтобы система работала стабильно при различных условиях эксплуатации.
Участвовать в проектировании архитектуры системы и реализовывать новые сценарии сбора метрик и логов
Вы станете проектировать и развивать архитектуру агента, которая должна быть гибкой и масштабируемой, чтобы соответствовать растущей инфраструктуре Яндекса. При этом важно обеспечить поддержку различных протоколов и форматов данных, а также создать механизмы быстрой адаптации системы к изменениям в инфраструктуре компании.
Предлагать и внедрять инновационные решения для улучшения продукта
Понадобится активно участвовать в инновационном развитии системы: создавать новые методы оптимизации и эффективные способы сбора и обработки метрик и логов. Вы сможете реализовывать свои идеи, как улучшить систему, и предлагать собственные инновационные решения, чтобы заранее адаптировать агента к изменениям.
Требования
- Владеете C++, разрабатывали надёжные программные продукты
- Понимаете принципы работы многопоточности и умеете эффективно их применять
- Знакомы с принципами работы операционных систем
- Готовы предлагать и реализовывать новые технические решения
- Стремитесь создавать качественный продукт для тысяч пользователей
Дополнительные требования
- Работали с сетевыми протоколами
- Оптимизировали производительность
- Умеете работать с большими объёмами данных
- Разрабатывали хранилища данных