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

Поделиться
HTML-код
  • Опубликовано: 1 дек 2024

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

  • @Romans-2077
    @Romans-2077 5 месяцев назад +28

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

    • @denisbalyasnikov7185
      @denisbalyasnikov7185 4 месяца назад +6

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

    • @MaruiInfantry
      @MaruiInfantry 4 месяца назад

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

    • @blackula911
      @blackula911 3 месяца назад

      @@denisbalyasnikov7185 дак все глыбы уехали, закомплексованым зумеркам нужно же с чего-то начинать.

  • @PurpleDaemon_
    @PurpleDaemon_ 5 месяцев назад +5

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

  • @MurtagBY
    @MurtagBY 5 месяцев назад +5

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

  • @PupkinIvan
    @PupkinIvan 4 месяца назад +1

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

  • @nikolaykozlov4888
    @nikolaykozlov4888 4 месяца назад +2

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

  • @IvanFedulov
    @IvanFedulov Месяц назад

    прошу прощения если пропустил. а как обеспечивается точная синхронизация времени, если спаны пишутся с разных хостов? если в них временые интервалы с наносекундной точностью. ntp хватает или нужны доп меры?

    • @igor.baliuk
      @igor.baliuk 18 дней назад

      Привет! В нашем случае не требуется наносекундная точность, поэтому используются обычные средства вида ntp.
      Не уверен, что это в принципе возможно - достигнуть наносекундной точности в синхронизации времени в распределенной системе.

  • @sfsdeniso5941
    @sfsdeniso5941 4 месяца назад +5

    observability = logging, tracing, metrics

  • @БольшойГегемон
    @БольшойГегемон 5 месяцев назад +3

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

  • @L0wPressure
    @L0wPressure 4 месяца назад

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

  • @MakarenkoSasha
    @MakarenkoSasha 4 месяца назад +2

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

  • @artempronchakov7216
    @artempronchakov7216 4 месяца назад

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

  • @AlexeyPirogov
    @AlexeyPirogov 4 месяца назад

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

  • @TarasShabatin
    @TarasShabatin 4 месяца назад +3

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

    • @denisvorona145
      @denisvorona145 4 месяца назад +1

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

    • @MrFancaR
      @MrFancaR 4 месяца назад

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

    • @AndreyTulenev
      @AndreyTulenev 4 месяца назад

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

  • @konstantingukov4752
    @konstantingukov4752 5 месяцев назад +1

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

    • @PurpleDaemon_
      @PurpleDaemon_ 5 месяцев назад

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

    • @igor.baliuk
      @igor.baliuk 4 месяца назад +3

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

  • @xzib-nt5
    @xzib-nt5 Месяц назад

    написали свой велосипед вместо того чтобы за не очень большую денежку интегрировать какое нибудь saas решение, типа datadog. ну молодцы)

  • @umahanov1
    @umahanov1 5 месяцев назад +4

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

  • @slavanikulin8069
    @slavanikulin8069 4 месяца назад

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

  • @_40cm_71
    @_40cm_71 4 месяца назад +1

    Пути
    Не путю

  • @dmitriishakshin2248
    @dmitriishakshin2248 4 месяца назад

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

    • @igor.baliuk
      @igor.baliuk 4 месяца назад

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

    • @gdygdy
      @gdygdy 4 месяца назад +1

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

    • @alexkazimir3835
      @alexkazimir3835 4 месяца назад +1

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

  • @bananasba
    @bananasba 5 месяцев назад +3

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

    • @igor.baliuk
      @igor.baliuk 4 месяца назад +1

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

  • @mikhailitiviti6744
    @mikhailitiviti6744 4 месяца назад

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

  • @alexkazimir3835
    @alexkazimir3835 4 месяца назад

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

  • @Aynyuh
    @Aynyuh 4 месяца назад

    Рут коз 🫠

  • @user-sz5slm
    @user-sz5slm 4 месяца назад +1

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

  • @namegorm
    @namegorm 4 месяца назад +9

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

    • @artembass9535
      @artembass9535 4 месяца назад +8

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

    • @namegorm
      @namegorm 4 месяца назад +2

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

    • @denisbalyasnikov7185
      @denisbalyasnikov7185 4 месяца назад

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

    • @artembass9535
      @artembass9535 4 месяца назад

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

    • @artembass9535
      @artembass9535 4 месяца назад

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