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

Поділитися
Вставка
  • Опубліковано 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

КОМЕНТАРІ • 44

  • @Roman.FighterAgainstEnthropy
    @Roman.FighterAgainstEnthropy 13 днів тому +24

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

    • @denisbalyasnikov7185
      @denisbalyasnikov7185 11 днів тому +2

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

    • @MaruiInfantry
      @MaruiInfantry 10 днів тому

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

  • @PurpleDaemon_
    @PurpleDaemon_ 13 днів тому +5

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

  • @PupkinIvan
    @PupkinIvan 19 годин тому

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

  • @MurtagBY
    @MurtagBY 13 днів тому +4

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

  • @sfsdeniso5941
    @sfsdeniso5941 12 днів тому +4

    observability = logging, tracing, metrics

  • @БольшойГегемон
    @БольшойГегемон 13 днів тому +3

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

  • @nikolaykozlov4888
    @nikolaykozlov4888 9 днів тому +1

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

  • @L0wPressure
    @L0wPressure 9 днів тому

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

  • @MakarenkoSasha
    @MakarenkoSasha 13 днів тому +2

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

  • @artempronchakov7216
    @artempronchakov7216 11 днів тому

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

  • @umahanov1
    @umahanov1 13 днів тому +4

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

  • @TarasShabatin
    @TarasShabatin 11 днів тому +3

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

    • @denisvorona145
      @denisvorona145 10 днів тому +1

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

    • @MrFancaR
      @MrFancaR 10 днів тому

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

    • @AndreyTulenev
      @AndreyTulenev 10 днів тому

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

  • @konstantingukov4752
    @konstantingukov4752 13 днів тому +1

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

    • @PurpleDaemon_
      @PurpleDaemon_ 13 днів тому

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

    • @igor.baliuk
      @igor.baliuk 7 днів тому +3

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

  • @_40cm_71
    @_40cm_71 11 днів тому

    Пути
    Не путю

  • @bananasba
    @bananasba 13 днів тому +3

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

    • @igor.baliuk
      @igor.baliuk 9 днів тому +1

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

  • @dmitriishakshin2248
    @dmitriishakshin2248 10 днів тому

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

    • @igor.baliuk
      @igor.baliuk 9 днів тому

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

    • @gdygdy
      @gdygdy 8 днів тому +1

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

    • @alexkazimir3835
      @alexkazimir3835 7 днів тому

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

  • @mikhailitiviti6744
    @mikhailitiviti6744 6 днів тому

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

  • @namegorm
    @namegorm 12 днів тому +9

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

    • @artembass9535
      @artembass9535 12 днів тому +7

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

    • @namegorm
      @namegorm 12 днів тому +1

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

    • @denisbalyasnikov7185
      @denisbalyasnikov7185 11 днів тому

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

    • @artembass9535
      @artembass9535 11 днів тому

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

    • @artembass9535
      @artembass9535 11 днів тому

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

  • @Aynyuh
    @Aynyuh 5 днів тому

    Рут коз 🫠

  • @alexkazimir3835
    @alexkazimir3835 7 днів тому

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

  • @user-sz5slm
    @user-sz5slm 10 днів тому +1

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