stringtranslate.com

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

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

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

Трассировка в основном используется для обнаружения аномалий, анализа неисправностей, отладки или диагностики в распределенных программных системах, таких как микросервисы или бессерверные функции. [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. ^ "The Tracing Book". Архивировано из оригинала 2009-02-24.
  2. ^ ab Li, Bowen; Peng, Xin; Xiang, Qilin; Wang, Hanzhang; Xie, Tao; Sun, Jun; Liu, Xuanzhe (2022). «Наслаждайтесь своей наблюдаемостью: отраслевое исследование трассировки и анализа микросервисов». Empirical Software Engineering . 27 (1): 25. doi :10.1007/s10664-021-10063-9. ISSN  1382-3256. PMC 8629732 . PMID  34867075. 
  3. ^ Мандель, Майя (2023-06-07). "Council Post: Распределенная трассировка: ключ к наблюдаемости микросервисов". Forbes . Получено 2024-01-12 .
  4. ^ ab Janes, Andrea; Li, Xiaozhou; Lenarduzzi, Valentina (2023). «Открытые инструменты трассировки: обзор и критическое сравнение». Journal of Systems and Software . 204. Elsevier BV: 111793. arXiv : 2207.06875 . doi : 10.1016/j.jss.2023.111793. ISSN  0164-1212.
  5. ^ "Точки трассировки (Отладка с помощью GDB)". sourceware.org . Получено 2022-06-24 .
  6. ^ Крафт, Йохан; Уолл, Андерс; Кинле, Хольгер (2010), «Запись трассировки для встраиваемых систем: уроки, извлеченные из пяти промышленных проектов», Runtime Verification , Springer Berlin Heidelberg, стр. 315–329, doi :10.1007/978-3-642-16612-9_24, ISBN 9783642166112
  7. ^ ab Mertz, Jhonny; Nunes, Ingrid (2019). О практической осуществимости мониторинга программного обеспечения: структура для отслеживания выполнения с низким уровнем воздействия. CASCON '04: Труды конференции 2004 года Центра передовых исследований по совместным исследованиям. IEEE. стр. 169–180. doi :10.1109/SEAMS.2019.00030. ISBN 978-1-7281-3368-3.
  8. ^ "Качественное интервью-исследование визуализации распределенной трассировки: характеристика проблем и возможностей". IEEE Xplore . 2023-02-01 . Получено 2024-01-12 .