← Все вакансии

Разработчик в 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++, разрабатывали надёжные программные продукты
  • Понимаете принципы работы многопоточности и умеете эффективно их применять
  • Знакомы с принципами работы операционных систем
  • Готовы предлагать и реализовывать новые технические решения
  • Стремитесь создавать качественный продукт для тысяч пользователей

Дополнительные требования

  • Работали с сетевыми протоколами
  • Оптимизировали производительность
  • Умеете работать с большими объёмами данных
  • Разрабатывали хранилища данных
C++ gRPC Yandex Cloud
Откликнуться →