Jump to content

Трассировка (программное обеспечение)

Трассировка в разработке программного обеспечения относится к процессу сбора и записи информации о выполнении программы. Эта информация обычно используется программистами в целях отладки , а также, в зависимости от типа и детализации информации, содержащейся в журнале трассировки, опытными системными администраторами или персоналом службы технической поддержки , а также средствами мониторинга программного обеспечения для диагностики распространенных проблем с программным обеспечением. [1] Отслеживание является сквозной задачей .

Не всегда существует четкое различие между отслеживанием и другими формами ведения журнала , за исключением того, что термин «отслеживание» почти никогда не применяется к ведению журнала, которое является функциональным требованием программы (поэтому исключая регистрацию данных из внешнего источника, например, сбор данных в эксперимент по физике высоких энергий и упреждающая запись в журнал ). Журналы, в которых регистрируется использование программы (например, журнал сервера ) или события операционной системы, представляющие в первую очередь интерес для системного администратора (см., например, «Просмотр событий» ), попадают в терминологическую серую зону.

Трассировка в основном используется для обнаружения аномалий, анализа ошибок, отладки или диагностики в распределенных программных системах, таких как микросервисы или бессерверные функции. [2]

Программное отслеживание [ править ]

Трассировка программного обеспечения — это инструмент, позволяющий разработчикам собирать информацию для отладки. Эта информация используется как во время циклов разработки, так и после выпуска. В отличие от регистрации событий, программная трассировка обычно не имеет понятия «класса» события или «кода события». Другие причины, по которым решения для регистрации событий на основе кодов событий не подходят для отслеживания программного обеспечения, включают:

  • Поскольку трассировка программного обеспечения является низкоуровневой, часто необходимо определить гораздо больше типов сообщений, многие из которых будут использоваться только в одном месте кода. Парадигма кода событий приводит к значительным затратам на разработку таких «однократных» сообщений.
  • Типы регистрируемых сообщений часто менее стабильны на протяжении цикла разработки, чем при регистрации событий.
  • Поскольку выходные данные трассировки предназначены для использования разработчиком, сообщения не нужно локализовать. Поэтому важно хранить отслеживаемые сообщения отдельно от других ресурсов, которые необходимо локализовать (например, сообщений о событиях).
  • Есть сообщения, которые никогда не следует видеть .
  • Сообщения трассировки следует хранить в коде, поскольку они могут повысить читаемость кода. Это не всегда возможно или осуществимо при использовании решений для регистрации событий.

Инструменты [ править ]

OpenTelemetry — это проект CNCF с открытым исходным кодом, который обеспечивает комплексную поддержку распределенной трассировки. [3] Некоторые поставщики, включая Datadog , New Relic , Splunk, также предлагают услуги SaaS по отслеживанию. [4]

Google и Meta разработали свои собственные системы отслеживания, а именно Dapper и Canopy. [2]

Отслеживание конкретных приложений [ править ]

Системное отслеживание [ править ]

В операционных системах трассировку можно использовать в ситуациях (например, при загрузке ), когда некоторые технологии, используемые для регистрации событий, могут быть недоступны.

Linux предлагает возможности трассировки на уровне системы и пользователя с помощью маркеров ядра и LTTng . ftrace также поддерживает трассировку ядра Linux. syslog — еще один инструмент в различных операционных системах для регистрации и отслеживания системных сообщений.

FreeBSD и SmartOS используют DTrace для трассировки ядра и пользовательской среды.

Во встроенном программном обеспечении трассировка также требует специальных методов для эффективного инструментирования и ведения журналов, а также низкой нагрузки на процессор. [6]

Техники [ править ]

Генерация и сбор трассировок [ править ]

Генерация трассировки вызовов методов может выполняться с помощью инструментирования исходного кода, сбора информации во время выполнения или под управлением отладчика. [7] макросы трассировки, аспектно-ориентированное программирование и соответствующие методы инструментирования Можно использовать .

Библиотеки, используемые в исходном коде, отправляют данные агенту или непосредственно компоненту сбора. [4]

Анализ трасс [ править ]

Для моделирования деревьев выполнения ISVis преобразует корневое дерево в ориентированный ациклический граф, а Jinsight использует принцип кадра вызова для сбора и представления совокупной информации о трассировках. [7]

Основным методом визуализации является представление дорожки, примером которого являются такие инструменты, как Jaeger , и часто включает аннотации и атрибуты «ключ-значение». Несмотря на широкое использование, этому дизайну не хватает строгого обоснования, и пользователи часто сталкиваются с такими проблемами, как отсутствие функций и запутанная навигация. Существуют альтернативы представлениям «дорожки», такие как представление зависимостей служб Jaeger или представления «Список», «Дерево» и «Таблица» SkyWalking. Агрегированные визуализации также используются для анализа больших объемов трассировок: такие системы, как Canopy, предлагают запрашиваемые метрики, а Jaeger — функции сравнения трассировок. [8]

Регистрация событий [ править ]

Регистрация событий предоставляет системным администраторам информацию, полезную для диагностики и аудита . Различные классы событий, которые будут регистрироваться, а также сведения, которые будут отображаться в сообщениях о событиях, часто рассматриваются на ранних этапах цикла разработки. Многие технологии регистрации событий позволяют или даже требуют присвоения каждому классу событий уникального «кода», который используется программным обеспечением регистрации событий или отдельным средством просмотра (например, Event Viewer) для форматирования и вывода удобочитаемого сообщения. Это облегчает локализацию и позволяет системным администраторам легче получать информацию о возникающих проблемах.

Поскольку регистрация событий используется для регистрации информации высокого уровня (часто информации об ошибках), производительность реализации регистрации часто менее важна.

Особая проблема, предотвращающая «слишком частую» запись повторяющихся событий, решается посредством регулирования событий.

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

Регистрация событий Отслеживание программного обеспечения
Используется в основном системными администраторами Потребляется в основном разработчиками
Регистрирует информацию «высокого уровня» (например, неудачная установка программы). Регистрирует информацию «низкого уровня» (например, выброшенное исключение ).
Не должно быть слишком «шумным» (содержащим множество повторяющихся событий или информации, бесполезной для целевой аудитории). Может быть шумно
Формат вывода , основанный на стандартах , часто желателен, а иногда даже необходим. Небольшие ограничения на формат вывода.
Сообщения журнала событий часто локализуются. Локализация редко вызывает беспокойство
Добавление новых типов событий, а также новых сообщений о событиях не должно быть гибким. Добавление новых сообщений о отслеживании должно быть быстрым.

и ограничения Проблемы

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

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

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

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

Безопасность и конфиденциальность [ править ]

В несвободном программном обеспечении продукта данные отслеживания могут включать конфиденциальную информацию об исходном коде .

См. также [ править ]

Ссылки [ править ]

  1. ^ «Книга розыска» . Архивировано из оригинала 24 февраля 2009 г.
  2. Перейти обратно: Перейти обратно: а б Ли, Боуэн; Пэн, Синь; Сян, Цилинь; Ван, Ханьчжан; Се, Тао; Вс, июнь; Лю, Сюаньчжэ (2022). «Наслаждайтесь своей наблюдательностью: промышленное исследование трассировки и анализа микросервисов» . Эмпирическая программная инженерия . 27 (1): 25. дои : 10.1007/s10664-021-10063-9 . ISSN   1382-3256 . ПМЦ   8629732 . ПМИД   34867075 .
  3. ^ Мандель, Майя (7 июня 2023 г.). «Сообщение Совета: Распределенная трассировка: ключ к наблюдаемости микросервисов» . Форбс . Проверено 12 января 2024 г.
  4. Перейти обратно: Перейти обратно: а б Джейнс, Андреа; Ли, Сяочжоу; Ленардуцци, Валентина (2023). «Открытые инструменты трассировки: обзор и критическое сравнение» . Журнал систем и программного обеспечения . 204 . Elsevier BV: 111793. arXiv : 2207.06875 . дои : 10.1016/j.jss.2023.111793 . ISSN   0164-1212 .
  5. ^ «Точки трассировки (отладка с помощью GDB)» . исходное программное обеспечение.org . Проверено 24 июня 2022 г.
  6. ^ Крафт, Йохан; Уолл, Андерс; Кинле, Хольгер (2010), «Запись трассировки для встраиваемых систем: уроки, извлеченные из пяти промышленных проектов» , Проверка времени выполнения , Springer Berlin Heidelberg, стр. 315–329, doi : 10.1007/978-3-642-16612-9_24 , ISBN  9783642166112
  7. Перейти обратно: Перейти обратно: а б Мерц, Джонни; Нуньес, Ингрид (2019). О практической возможности мониторинга программного обеспечения: основа для отслеживания выполнения с низким уровнем воздействия . CASCON '04: Материалы конференции Центра перспективных исследований по совместным исследованиям 2004 г. IEEE. стр. 169–180. дои : 10.1109/SEAMS.2019.00030 . ISBN  978-1-7281-3368-3 .
  8. ^ «Качественное интервью с визуализацией распределенной трассировки: характеристика проблем и возможностей» . IEEE Эксплор . 01 февраля 2023 г. Проверено 12 января 2024 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d203dc5496ba4656adcbd9f832b449e1__1717897800
URL1:https://arc.ask3.ru/arc/aa/d2/e1/d203dc5496ba4656adcbd9f832b449e1.html
Заголовок, (Title) документа по адресу, URL1:
Tracing (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)