Как мы делаем трейсинг в условиях тысяч сервисов и миллионов спанов в секунду / Игорь Балюк (Авито)

Поделиться
HTML-код
  • Опубликовано: 3 июл 2024
  • МТС - генеральный партнёр конференции Saint HighLoad++ 2024.
    ________
    . Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
    Программа, подробности и билеты по ссылке: vk.cc/cuyIqx
    --------
    Крупнейшая профессиональная конференция для разработчиков высоконагруженных систем Highload++ 2023
    Презентация и тезисы:
    highload.ru/moscow/2023/abstr...
    Поговорим о трейсинге в Авито: какую он задачу решает, и как у нас выглядит архитектура трейсинга, обрабатывающая миллионы спанов в секунду от нескольких тысяч сервисов, объединенных в service mesh (который, как оказалось, помогает).
    ...
    --------
    Нашли ошибку в видео? Пишите нам на support@ontico.ru

Комментарии • 46

  • @FighterAgainstEnthropy
    @FighterAgainstEnthropy 28 дней назад +26

    Образцовый доклад, просто идеальный текст и визуализация, браво

    • @denisbalyasnikov7185
      @denisbalyasnikov7185 26 дней назад +4

      Не покидает чувство, что произошла инфляция уровня докладов на HL. Ну т.е. образцовые доклады в моем понимании - это продакшен от Аксенова, Зайцева, Осипова, Столярова, etc.. Тут самый обычный доклад middle уровня, который хорошо подходит для внутреннего митапа на час в управлении на 20 человек в какую-нибудь среду после закрытия спринта.

    • @MaruiInfantry
      @MaruiInfantry 25 дней назад

      @@denisbalyasnikov7185 доклады уровня синьер-лид не имеют смысла. Там будет что-то типа "Мы раскопали, что тормозит индекс. Переписали его с Java на Го командой из 3х человек. Всё стало быстрее. Пока." Синьер отличается от мидла тем, что сделает это один за 3 дня. А не потупить и бросит через месяц. Задачи везде одинаковые. Просто уровень мидла это присобачить апишку или прокинуть трейс. А синьера - переколбасить 50 алгосов из головы и спасти деньги бизнеса.

  • @PurpleDaemon_
    @PurpleDaemon_ 27 дней назад +5

    Один из лучших докладов на моей памяти!

  • @MurtagBY
    @MurtagBY 28 дней назад +5

    Отличный уровень глубины повествования, мне было понятно, хотя совсем не моя зона экспертизы

  • @sfsdeniso5941
    @sfsdeniso5941 27 дней назад +5

    observability = logging, tracing, metrics

  • @БольшойГегемон
    @БольшойГегемон 28 дней назад +3

    Отличный доклад

  • @L0wPressure
    @L0wPressure 24 дня назад

    Хороший доклад, спасибо!

  • @MakarenkoSasha
    @MakarenkoSasha 27 дней назад +2

    Ха! я теперь понял, что чуваки которые сидят всю ночь за компом, это не просто чуваки которыми нечем заняться, а это никто иные, как инцидент-менеджеры!!! Они наблюдают ночь за миром и в случаи возникновении аварии, проблемы или просто непонятной ситуации находят подходящих экспертов! Ну а про экспертов, вы знаете!

  • @nikolaykozlov4888
    @nikolaykozlov4888 24 дня назад +1

    огонь! Хочу в Авито!

  • @artempronchakov7216
    @artempronchakov7216 25 дней назад

    Отличный доклад!

  • @AlexeyPirogov
    @AlexeyPirogov 4 дня назад

    Интересный доклад, спасибо. Только нет action items 99% программистов и компаний. Мы уже на elk+zipkin+prometheus и хотим брать open source решения и не изобретать всё самим.

  • @PupkinIvan
    @PupkinIvan 15 дней назад

    Отличный доклад. Не раскрыто только желание заопенсорсить коллекторы и UI :)

  • @umahanov1
    @umahanov1 28 дней назад +4

    Доклад хороший, только зумеры ничего не придумали и трейсинг к ним никакого отношения не имеет

  • @slavanikulin8069
    @slavanikulin8069 10 дней назад

    Сайдкар, который прокси - уже не сайдкар)

  • @TarasShabatin
    @TarasShabatin 26 дней назад +3

    Нам нравится Кликхаус, он крутой.
    Перед Кликхаусом у нас есть Кафка, так как Кликхаус плохо работает на запись... Мы пишем в нево большими пачками и редко...

    • @denisvorona145
      @denisvorona145 25 дней назад +1

      Ну как бы это особенность колоночных БД. Они только чтение больших данных ускоряют.

    • @MrFancaR
      @MrFancaR 25 дней назад

      когда не чукча даже не читал мануал, но осуждает

    • @AndreyTulenev
      @AndreyTulenev 25 дней назад

      Почему б не хранить трейсы в чем-то специализированном для этого типа данных?

  • @konstantingukov4752
    @konstantingukov4752 28 дней назад +1

    24:50 - что на практике означает "синхронизировать count min sketch между всеми коллекторами"?

    • @PurpleDaemon_
      @PurpleDaemon_ 27 дней назад

      Считать вероятность относительно всех коллекторов, а не внутри каждого отдельно?

    • @igor.baliuk
      @igor.baliuk 22 дня назад +3

      В комментариях уже дали правильный ответ, немного раскрою его.
      В нашем случае шардирование происходит только по Trace ID.
      Мы бы хотели выставить гибкое условие вида "сохранять все трейсы, где есть редкие спаны", где "редким" будем считать спан, который встречался меньше N раз за час, с точностью до имени сервиса и имени операции. Но трейсы с такими спанами могут агрегироваться на разных коллекторах. Коллекторы должны как-то синхронизировать свои счетчики между собой, чтобы мы понимали, как много таких спанов было сгенерировано за последний час.
      В итоге пришли к следующей схеме. Разобьем временную прямую на некоторое блоки фиксированного размера в T минут. Коллектор поддерживает локальное состояние count-min-sketch счетчиков за последний период, на основании данных, которые проходят через этот коллектор. По завершению периода коллектор сохраняет свое состояние в отдельное общее хранилище и обнуляет счетчики. Также коллектор постоянно вычитывает состояние других коллекторов за уже прошедшие периоды и агрегирует их у себя в памяти. Таким образом у коллектора есть информация по локальным счетчикам за самый актуальный период и сумма счетчиков по всем коллекторам за уже прошедшие периоды.
      Решение о семплировании принимается исходя из данных за самый актуальный период и за несколько предыдущих периодов. Важно, чтобы правила семплирования имели период больше, чем период синхронизации T.

  • @_40cm_71
    @_40cm_71 26 дней назад

    Пути
    Не путю

  • @bananasba
    @bananasba 27 дней назад +3

    написали клон sentry

    • @igor.baliuk
      @igor.baliuk 24 дня назад +1

      Все APM инструменты в чем-то похожи друг на друга. Но мы в первую очередь целились в полноценные платформы, такие как DataDog, honeycomb и т. д. Всех их объединяет то, что они из одного места предоставляют доступ сразу к многим видам данных, и то, что они как правило платные :)
      Self-hosted версия Sentry у нас тоже есть, и неплохо справляется со своей основной задачей: принимать ошибки от приложений (или веба), показывать стектрейсы ошибки, группировать их и отправлять алерты.
      В Sentry действительно появился механизм работы с трейсингом, однако сам UI не предоставляет тех переходов, которые мы бы хотели видеть, и есть подозрение, что будут проблемы с обработкой того объёма данных, которые у нас есть (мы не пробовали, но опираемся на предыдущий опыт использования sentry). Поэтому на данный момент Sentry у нас используется только по прямому назначению.

  • @namegorm
    @namegorm 27 дней назад +9

    Доклад про то, как сначала создать себе проблем микросервисами, а затем пытаться их решить ресурсами.

    • @artembass9535
      @artembass9535 27 дней назад +8

      Да, могли ж просто монолит на пхп забабахать, чтоб он один мильоны рпс вывозил, и на одном мощном серваке его развернуть, не заниматься ерундой

    • @namegorm
      @namegorm 27 дней назад +1

      @@artembass9535 кто тебе сказал, что монолит не масштабируется? Джун детектед.

    • @denisbalyasnikov7185
      @denisbalyasnikov7185 26 дней назад

      Без пути героя нечего было бы докладывать)

    • @artembass9535
      @artembass9535 26 дней назад

      ​​@@namegormну удачи помасштабировать свой монолит, может быть в твоем залупа-софте с 10ю клиентами и 3мя разрабами это не вызовет проблем

    • @artembass9535
      @artembass9535 26 дней назад

      и да, трейсы нужны не только в микросервисной архитектуре, в твоем любимом монолите они тоже будут очень полезны, стажер детектед

  • @dmitriishakshin2248
    @dmitriishakshin2248 25 дней назад

    инцидент-инженеры у вас по сути являются SRE инженерами?

    • @igor.baliuk
      @igor.baliuk 24 дня назад

      Человечество придумало довольно много определений SRE-инженерам :) Но в Авито это разные роли.
      В Авито SRE-инженеры в первую очередь занимаются разработкой и эксплуатацией решений, влияющих на стабильность системы. Например, они могут заниматься быстрым развертыванием Kubernetes кластеров, их настройкой и организацией автоматического наблюдения за ними (и автоматического выведения деградирующих k8s узлов).
      Инцидент-менеджеры организуют постоянное (24/7) наблюдение за production средой. Если по метрикам (или по другим признакам) заметно, что что-то перестало работать, инцидент-менеджер занимается процессом устранения деградации: определяет зону ответственности, находит и призывает ответственных разработчиков, помогает им найти root cause и ведет лог инцидента для последующего разбора.

    • @gdygdy
      @gdygdy 23 дня назад +1

      ​@@igor.baliuk
      Root cause по-русски это первопричина

    • @alexkazimir3835
      @alexkazimir3835 22 дня назад +1

      Простыми словами (itil) это техподдержка L1, L2, L3. Просто немодно, немолодёжно

  • @mikhailitiviti6744
    @mikhailitiviti6744 21 день назад

    Надеюсь это только пример, что на каждый чих людей надо будить

  • @Aynyuh
    @Aynyuh 20 дней назад

    Рут коз 🫠

  • @alexkazimir3835
    @alexkazimir3835 22 дня назад

    Root cause, root cause...😢 Первопричина

  • @user-sz5slm
    @user-sz5slm 25 дней назад +1

    Не стоит доклад про логи на конфе вещать. В Авито до сих пор по номеру телефона авторизуют... Так себе сервис. Похоже на рекламу больше, чем доклад