Comments 6
Отличная статья! Спасибо
Тоже на данный момент занимаемся вопросом наблюдаемости и, в частности, трейсингом
Посему вопрос: применяли ли вы семплинг для трейсов? Какой? Использовали ли tail-based вариант семплинга? Если да, то каким образом это организовали
Золото, а не статья! Спасибо!
По красивым конечным графикам с SLI, клиентским путём сразу видна польза внедрения, возьму себе на заметку.
Сколько дней сейчас храните трейсы и сколько диска пожирает? Много ли у вас фильтров сделано, чтобы не записывать лишний шум (хелчеки всякие)?
Рад быть полезным) Трейсы храним неделю, но для того чтобы из них делать метрики и SLI, их вообще хранить не обязательно.
По поводу шума особо не заморачивались, spring actuator только отфильтровали, да спаны с нулевыми trace/span id. У хелсчеков околонулевая кардинальность, так что на них можно смело забить, никак не влияют на объем tsdb.
Гораздо больше проблем создают сервисы, в которых в span_name попадают какие-либо uid. В спринге при правильном использовании контроллеров с шаблонами это обезличивается автоматом, а вот в нескольких старых сервисах на Akka - нет, их пришлось полностью исключить из спанметрик, до их замены либо рефакторинга.
В таких местах нам потребовалось вмешаться в код и сделать рефакторинг, чтобы эти слоёные пироги отражали суть.
Поясните пожалуйста этот момент. Что вы сделали?
В зависимости от конкретного случая. Где-то достаточно распилить монолитный метод на несколько отдельных (например, если внешние вызовы делались прямо из контроллера), где-то в контроллерах не использовались шаблоны (см коммент выше), где-то либы обновили, чтобы поддерживалась автоинструментация, где-то пришлось вручную расставить аннотации @withSpan
.
Мониторинг бизнес-процессов с помощью OpenTelemetry