turns-00027.parquet:36063
2b041c8873a61f16a339e9cedegenerate_repetitionAbsentFinal dense release
Select one behavior. Every returned turn has one binary label: Present or Absent. Source: final dense boolean release.
2b041c8873a61f16a339e9ce"## Что такое визуализация и путь выполнения запроса Путь запроса представлен в виде операций, в трейсинге они называются спанами. Спан — это базовый элемент распределённой трассировки, который представляет собой одну операцию."
## Что такое визуализация и путь выполнения запроса Путь выполнения запроса отображается в виде операций, которые в трейсинге называются спанами. Спан представляет собой элементарную единицу распределённой трассировки, описывающую одну операцию в процессе выполнения запроса.
8b8e1cc386b5ecfc8777e5e1"Представим, что мы разрабатываем сервис, который принимает пользовательские заказы. Чтобы их обрабатывать, нужно сохранять определённую информацию из базы данных. Эти две операции — обработка заказа и сохранение информации из базы данных — и становятся нашими спанами. У них появляется родственная связь: отношения родитель — ребёнок. Выстраивается логика: спан **принятие заказа** выполнится тогда, когда выполнится операция по сохранению данных из базы. У спанов есть названия, по которым можно понять, что происходило в какой-то части выполнения запросов. Также у них есть время начала и конца, чтобы можно было проанализировать, когда происходила та или иная операция и сколько времени она заняла. Дополнительная метаинформация представлена в виде тегов, логов и ссылок на другие спаны. Из этих спанов мы можем собрать трейс. Трейс, по сути, — это множество спанов, ко которые представляет собой путь выполнения конкретного запроса. Благодаря трейсу мы можем чётко ответить, как именно выполнялся запрос: через какие микросервисы он прошёл, в какие базы данных заходил, где были основные тормоза при обработке запроса."
Представьте, что идет разработка сервиса для обработки пользовательских заказов. Для их выполнения необходимо сохранять определённую информацию в базу данных. Эти две операции — обработка заказа и сохранение информации в базу данных — становятся спанами. Они имеют взаимосвязь в виде отношений родитель—ребёнок. Логика выполнения такова: спан **принятие заказа** завершится только после успешного выполнения операции сохранения данных в базе. У каждого спана есть своё название, которое помогает понять, что именно происходило в процессе выполнения запросов. Помимо этого, у спанов заданы время начала и завершения, что позволяет анализировать продолжительность каждой операции. Дополнительная метаинформация представлена в виде тегов, логов и ссылок на другие спаны. Из совокупности спанов формируется трейс. Трейс представляет собой набор спанов, визуализирующих путь выполнения конкретного запроса. С помощью трейса можно точно определить, каким образом выполнялся запрос: через какие микросервисы он прошёл, какие базы данных были задействованы и где возникали основные задержки в ходе обработки запроса.
c73db959fb5f26c39986507c"Этой системой в Яндексе уже пользуются в более чем 180 проектах, среди которых Такси, Маркет, Инфраструктура, Вертикали и другие. Каждую секунду в систему прилетает 11 млн спанов, чей суммарный трафик составляет 10 ГБ в секунду. ##{red}(Данные на февраль 2024)##
Интерфейс трейсинга доступен во внутренней инсталляции Мониторинга по адресу [m.yandex-team.ru](http://m.yandex-team.ru). В облачной инсталляции он тоже скоро появится. Пока там можно воспользоваться интерфейсом Jaeger по адресу [tracing.cloud.yandex.ru](http://tracing.cloud.yandex.ru)."Эту систему в Яндексе уже используют более чем в 180 проектах, включая Такси, Маркет, Инфраструктуру, Вертикали и другие. Каждую секунду в неё поступает около 11 миллионов спанов, общий объём трафика которых составляет 10 ГБ в секунду. Интерфейс трейсинга доступен во внутренней установке Мониторинга по адресу [m.yandex-team.ru](http://m.yandex-team.ru). В ближайшее время планируется его появление в облачной инсталляции, где пока можно использовать интерфейс Jaeger по адресу [tracing.cloud.yandex.ru](http://tracing.cloud.yandex.ru). *(Данные актуальны на февраль 2024 года.)*
fc3538402963111e39a6f87b"В левой части — операции, которые отражают, что в каком микросервисе выполнялось. В правой части появляются так называемые колбаски, которые показывают, сколько времени заняла та или иная операция. Каждый сервис обозначен своим цветом, что позволяет легко ориентироваться и понимать контекст выполнения запросов."
В левой части интерфейса отображаются операции, показывающие, какие действия выполнялись в каждом микросервисе. С правой стороны представлены так называемые "колбаски", визуализирующие длительность выполнения каждой операции. Каждый сервис обозначен уникальным цветом, что облегчает ориентацию и помогает быстро понять контекст выполнения запросов.
a8ab8203310dc4e34fdde6c7перепиши для документации, как технический писатель. пиши от третьего лица "## Что такое инструментирование сервисов Представим, что мы написали приложение и хотим его мониторить, чтобы оно отливало метрики. Для этого нам потребуется проинструментировать код приложения метриками — то же самое актуально и для трейсов. Если нам нужно, чтобы приложение отливало данные трассировок, нам надо его проинструментировать. Для этого есть стандарт OpenTelemetry — он определяет, как поставлять и обрабатывать данные телеметрии, в нашем случае — данные трассировок. Задачи визуализации, обработки и хранения решает система трейсинга, а вам остаётся лишь поставить данные телеметрии. Трейсинг живёт по такой же проектной модели, как в Мониторинге. В ней есть: 1. Проект — логическое разделение для группировки сущностей (квотирования, прав доступа и т.д.). 2. Кластер — окружение или инсталляция приложения, в которой оно было запущено (pre-prod, testing, production и т. д.). 3. Сервис — название приложения, микросервиса или базы данных, которое использует трейсинг. Пример — наша команда Observability из 45 человек. Мы разделены на независимые проекты: UI, трейсинга, Соломона, логов. У каждого проекта независимые дежурства, релизы и ответственность. Помимо этого, в рамках этих проектов у нас есть свои микросервисы, за которые мы отвечаем. Например, в трейсинге есть Collector и Query."
## Что такое инструментирование сервисов Инструментирование сервисов — это процесс внедрения метрик в код приложения для целей мониторинга. Например, чтобы приложение передавало метрики, его необходимо проинструментировать соответствующими инструментами, и аналогичный подход актуален для трейсов. Если требуется, чтобы приложение отправляло данные трассировок, его также необходимо проинструментировать. Для этого существует стандарт OpenTelemetry, который определяет, как следует доставлять и обрабатывать телеметрические данные, в данном случае — данные трассировок. Система трейсинга решает задачи, связанные с визуализацией, обработкой и хранением данных, предоставляя пользователю возможность просто конфигурировать отправку телеметрии. Трейсинг основывается на проектной модели, аналогичной такой в системе Мониторинга, которая включает следующие компоненты: 1. **Проект** — это логическая единица, используемая для группировки сущностей, таких как квотирование и контроль прав доступа. 2. **Кластер** — представляет собой окружение или инсталляцию приложения, где оно выполняется, например, pre-prod, testing, production и т. д. 3. **Сервис** — это наименование приложения, микросервиса или базы данных, использующего трейсинг. В качестве примера рассмотрим команду Observability, состоящую из 45 человек. Команда разделена на независимые проекты: UI, трейсинг, Соломон, и логи. Каждый проект имеет собственные дежурства, релизы и зоны ответственности. Внутри этих проектов у команды есть свои микросервисы, за которые они отвечают. Например, в проекте трейсинга имеются такие компоненты, как Collector и Query.
ef198fd5216166b1254477ff"Конечно, Collector и Query запущены не только в проде, есть и препрод-инсталляция. Чтобы пометить ту или иную инсталляцию, используется Cluster — аналогично с трейсами."
Collector и Query запускаются не только в продакшене, но и в препрод-инсталляции. Чтобы различать различные инсталляции, используется элемент `Cluster`, аналогичный трейсам.
29ad851e53005e49c3639351"# **Пример: инструментируем приложение** Представим, что мы разработчики проекта из трёх микросервисов: user-info-сервис, который отдаёт информацию по определённому пользователю. Сам он получает эту информацию из location-сервиса, где по IP-адресу определяет местонахождение пользователя. Дополнительно user-info-сервис получает рейтинг пользователя из базы данных Redis.  Запустили проект, смотрим графики. Большинство запросов обрабатывается успешно, но есть небольшой фон ошибок.  Чтобы от него избавиться, воспользуемся трейсингом. Наши микросервисы общаются по HTTP. Ниже представлен код на Go, синим цветом выделено всё, что нужно добавить в код микросервиса, чтобы в приложении появился трейсинг.   *Сверху — код HTTP-сервера, в нижней — код HTTP-клиента*"
# **Пример: инструментируем приложение** Представим проект, состоящий из трёх микросервисов: `user-info-сервис`, предоставляющий информацию о пользователе, `location-сервис`, определяющий местоположение пользователя по IP-адресу, и база данных Redis, используемая `user-info-сервисом` для получения рейтинга пользователя.  После запуска проекта видно, что большинство запросов обрабатывается успешно, но существует небольшой фон ошибок.  Для устранения ошибок внедряется трейсинг. Поскольку наши микросервисы взаимодействуют через HTTP, ниже приводится код на Go. Синим цветом выделены изменения, которые необходимо внести в код микросервиса для интеграции трейсинга в приложение.   *Верхний фрагмент кода относится к HTTP-серверу, а нижний — к HTTP-клиенту.*
b344aa2a9bcd9e36b1398198"Сервер и клиент будут работать по-прежнему. Нужно лишь добавить несколько строчек кода, чтобы запустить процесс автоинструментации. Тут не создаются спаны — их за нас создаст фреймворк OpenTelemetry при помощи выделенных синим строк кода. Помимо инструментации, нужно будет написать еще несколько строк кода, чтобы проинициализировать трейсинг. Для приложения нужно создать экспортёра и сказать ему, куда отливать данные телеметрии – указать название сервиса, в который будут отливаться эти данные."
Сервер и клиент будут продолжать работать, как и прежде. Необходимо лишь добавить несколько строк кода, чтобы запустить процесс автоинструментации. Создание спанов вручную не требуется — их автоматически создаст фреймворк OpenTelemetry, используя выделенные синим цветом строки кода. Кроме инструментирования, потребуется написать дополнительные строки кода для инициализации трейсинга. Для этого в приложении необходимо создать экспортёр и указать, куда направлять данные телеметрии. Также следует определить название сервиса, куда будут передаваться эти данные.
c7c262bddc6ffd74a767f5a5"После этого переходим в интерфейс Monitoring UI и используем поиск. В поиске можно искать трейсы по проектам, сервисам, продолжительности. "
После этого необходимо перейти в интерфейс Monitoring UI и воспользоваться функцией поиска. В этом поиске можно искать трейсы по множеству критериев, таким как проекты, сервисы и продолжительность выполнения.
8c9171f8c8c261cfd154225d"Язык поиска в трейсинге такой же, как в Мониторинге: указываем проект, сервис и ищем там спан с ошибкой. Находим трейс и начинаем его анализировать. Несколько спанов подсвечены красным — это значит, что в них что-то не так."
Язык поиска в трейсинге аналогичен используемому в Мониторинге. Необходимо указать проект, сервис и выполнить поиск спанов с ошибками. После нахождения трейса можно приступать к его анализу. Если несколько спанов подсвечены красным, это указывает на наличие в них каких-либо проблем.