Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Помощь запрашивалАндрей НовиковАндрей Новиков Андрей Новиков

ПомогДмитрий ШвецовДмитрий Швецов Дмитрий Швецов

Бэк: Yabeda: адаптер для DataDog

Для новичков, задача на два-три дня

Фреймворк yabeda позволяет легко объявлять и собирать метрики о работе Ruby-приложения — и с помощью адаптеров экспортировать их в системы мониторинга. Сейчас есть адаптеры для Prometheus (yabeda-prometheus) и NewRelic (yabeda-newrelic), но это далеко не полный список систем, которых мы хотели бы поддерживать.

Необходимо написать адаптер (Ruby gem) для yabeda, который позволит отправлять кастомные метрики в DataDog.

Польза: познакомиться с работой систем мониторинга изнутри, получить опыт в Ruby open source, принести пользу сообществу.

Решение: победителем признана реализация Дмитрия Швецова на основе Dogstatsd сделанная в соавторстве с Николаем Малининым. Николай начинал решать задачу отдельно, но решил объединить усилия с Дмитрием.

Это простое задание в плане кодирования — необходимо унаследоваться от базового адаптера и «всего лишь» реализовать шесть хуков: три на регистрацию разных типов метрик и три на непосредственное измерение их значений.

Трудность состоит в том, чтобы понять, как именно их реализовать: придется изучить, как работают Ruby-клиенты к DataDog, выбрать, какой использовать, разобраться, как устроена yabeda.

Если вы никогда не работали с системами мониторинга, то вам поможет немного освоиться наша статья о Yabeda, слайды и видео с выступления автора на Ruby Russia 2018.

Вопросы, на которые нужно будет найти ответы:

  • как (и нужно ли) регистрировать метрики;
  • как записывать значения метрик;
  • как отправлять собранные значения в DataDog;
  • как и когда собирать метрики из collect-блоков, которые не привязаны к каким-либо событиям.

Релевантные материалы:

Для справки можно использовать два уже написанных адаптера — yabeda-prometheus и yabeda-newrelic. Они разные, так как Prometheus работает по pull-модели, а NewRelic — по push-модели (а по какой работает DataDog?).

Инструкции по выполнению

  1. Сделать новый проект yabeda-datadog на GitHub — gem, который будет адаптером для yabeda.
  2. Реализовать необходимый функционал, предусмотреть нужные тесты.
  3. Кратко описать в README, как настроить yabeda-datadog и DataDog-клиента в своем приложении или сослаться на релевантную документацию.
  4. Прислать письмо или написать комментарий о выполненном задании.