stringtranslate.com

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

Трассировка в разработке программного обеспечения относится к процессу сбора и записи информации о выполнении программы. Эта информация обычно используется программистами в целях отладки , а также, в зависимости от типа и детализации информации, содержащейся в журнале трассировки, опытными системными администраторами или персоналом службы технической поддержки , а также средствами мониторинга программного обеспечения для диагностики распространенных проблем с программным обеспечением. [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. ^ Мандель, Майя (07.06.2023). «Сообщение совета: распределенная трассировка: ключ к наблюдаемости микросервисов». Форбс . Проверено 12 января 2024 г.
  4. ^ аб Джейнс, Андреа; Ли, Сяочжоу; Ленардуцци, Валентина (2023). «Открытые инструменты трассировки: обзор и критическое сравнение». Журнал систем и программного обеспечения . Эльзевир Б.В. 204 : 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, номер документа : 10.1007/978-3-642-16612-9_24, ISBN 9783642166112
  7. ^ Аб Мерц, Джонни; Нуньес, Ингрид (2019). О практической возможности мониторинга программного обеспечения: основа для отслеживания выполнения с низким уровнем воздействия. CASCON '04: Материалы конференции Центра перспективных исследований по совместным исследованиям 2004 г. IEEE. стр. 169–180. doi :10.1109/SEAMS.2019.00030. ISBN 978-1-7281-3368-3.
  8. ^ «Качественное интервью-исследование визуализации распределенной трассировки: характеристика проблем и возможностей» . IEEE Эксплор . 01 февраля 2023 г. Проверено 12 января 2024 г.