The observability framework Kieker provides a range of analysis capabilities, but it is currently only able to instrument a smaller selection of languages and technologies, including Java, C, Fortran, and Python. The OpenTelemetry standard aims for providing reference implementations for most programming languages, including C# and JavaScript, that are currently not supported by Kieker. In this work, we describe how to transform OpenTelemetry tracing data into the Kieker framework. Thereby, it becomes possible to create for example call trees from OpenTelemetry instrumentations. We demonstrate the usability of our approach by visualizing trace data of the Astronomy Shop, which is an OpenTelemetry demo application.
- ID статьи: 2510.11179
- Название: Interoperability From OpenTelemetry to Kieker: Demonstrated as Export from the Astronomy Shop
- Авторы: David Georg Reichelt (Lancaster University Leipzig), Shinhyung Yang (Kiel University), Wilhelm Hasselbring (Kiel University)
- Классификация: cs.SE (Software Engineering), astro-ph.IM (Instrumentation and Methods for Astrophysics)
- Дата публикации: 13 октября 2025 г.
- Ссылка на статью: https://arxiv.org/abs/2510.11179
В данной статье рассматривается проблема взаимодействия между фреймворком наблюдаемости Kieker и стандартом OpenTelemetry. Kieker обладает богатыми аналитическими возможностями, но поддерживает только ограниченное количество языков программирования (Java, C, Fortran, Python), в то время как OpenTelemetry предоставляет эталонные реализации для большинства языков программирования, включая C# и JavaScript, которые не поддерживаются Kieker. В статье описывается метод преобразования данных трассировки OpenTelemetry в формат фреймворка Kieker, что позволяет создавать результаты анализа, такие как деревья вызовов, на основе инструментирования OpenTelemetry. Применимость метода подтверждена визуализацией данных трассировки демонстрационного приложения Astronomy Shop.
- Ограничения поддержки языков: Фреймворк Kieker, несмотря на мощные аналитические возможности и низкие накладные расходы, поддерживает только ограниченное количество языков, таких как Java, C, Fortran и Python
- Требование стандартизации: OpenTelemetry как де-факто стандарт предоставляет реализации агентов для множества языков программирования, но не может напрямую использовать аналитические возможности Kieker
- Отсутствие взаимодействия: Между двумя фреймворками отсутствует эффективный механизм преобразования данных, что ограничивает возможность комбинированного использования их преимуществ
- Современные архитектуры микросервисов обычно используют многоязычные технологические стеки, требующие единого решения для наблюдаемости
- Преимущества низких накладных расходов Kieker и широкой поддержки языков OpenTelemetry являются взаимодополняющими
- Реализация взаимодействия позволит в полной мере использовать преимущества обоих фреймворков
- Отсутствуют решения для преобразования данных из OpenTelemetry в Kieker
- Фундаментальные различия между концепциями асинхронной и синхронной трассировки создают проблемы совместимости
- Существующие инструменты не могут одновременно использовать аналитические возможности Kieker и многоязычную поддержку OpenTelemetry
- Реализовано преобразование формата данных из OpenTelemetry в Kieker, позволяющее использовать богатую экосистему агентов OpenTelemetry в аналитическом фреймворке Kieker
- Решены концептуальные различия между асинхронной и синхронной трассировкой путем введения механизма асинхронной маркировки для обработки несовместимых представлений потока управления
- Предоставлена полная схема сопоставления полей, устанавливающая соответствие между двумя форматами данных
- Подтверждена применимость метода на примере Astronomy Shop, демонстрирующая возможность анализа данных трассировки многоязычных приложений микросервисов
Преобразование данных трассировки в формате OpenTelemetry (полученных через gRPC) в формат журнала мониторинга Kieker, позволяющее обрабатывать их в аналитическом конвейере Kieker и генерировать результаты анализа, такие как деревья вызовов и диаграммы компонентов.
- Использует язык определения инструментирования (IRL) для определения формата данных
- Структуры записей определяются на основе Xtext
- Поддерживает синхронную трассировку, при которой одновременно может выполняться только один вызов
- Использует индекс порядка выполнения (eoi) и размер стека выполнения (ess) для представления потока управления
- Стандартный формат, основанный на сериализации protobuf
- Поддерживает три столпа наблюдаемости: логи, метрики и трассировку
- Трассировка состоит из spans, каждый span содержит имя, временные метки, атрибуты и т.д.
- Поддерживает асинхронную трассировку, представляя поток управления через отношения родитель-потомок
Установлены прямые соответствия между полями:
startEpochNanos → tinendEpochNanos → toutname → signature- Имя хоста генерируется путем комбинирования атрибутов из семантических соглашений OpenTelemetry
Столкнувшись с фундаментальными различиями между асинхронной и синхронной трассировкой, предложены четыре решения:
- Линеаризация трассировки: упорядочение вызовов по вызывающему объекту, но значительно увеличивает использование ресурсов
- Прямое преобразование: пропуск журнала мониторинга с прямым преобразованием в ExecutionTrace, но нарушает архитектурное разделение Kieker
- Добавление нового типа асинхронной записи: требует переписания большого количества аналитических конвейеров
- Схема асинхронной маркировки: добавление асинхронной маркировки к трассировкам с специальной обработкой при анализе
Выбран вариант 4, при котором асинхронные трассировки обрабатываются в kieker-trace-analysis с использованием флага --asynchronousTrace.
- Обработка асинхронной совместимости: инновационное решение проблемы совместимости двух различных моделей трассировки с использованием механизма маркировки
- Стратегия семантического сопоставления: установление интеллектуального соответствия между семантическими соглашениями OpenTelemetry и полями Kieker
- Сохранение архитектуры: реализация взаимодействия без нарушения исходной архитектуры Kieker
Использовано Astronomy Shop в качестве демонстрационного приложения:
- Демонстрационное приложение OpenTelemetry по умолчанию
- Содержит 14 сервисов, использующих 11 различных языков программирования
- Включает сервисы на .NET и TypeScript, которые не поддерживаются Kieker напрямую
- Astronomy Shop с включённым инструментированием OpenTelemetry
- Активированный Kieker-otel-transformer для преобразования данных
- Использование инструментов анализа трассировки Kieker для визуализации
- Проверка корректности преобразования путём генерации деревьев вызовов
- Анализ качества визуализации отношений вызовов между сервисами
- Проверка полноты данных трассировки между языками
Успешно реализовано преобразование данных из OpenTelemetry в Kieker с генерацией полной визуализации дерева вызовов. На рисунке 3 показаны отношения вызовов между сервисом продуктов и сервисом рекомендаций, что подтверждает эффективность метода преобразования.
При фактическом запуске Astronomy Shop:
- Успешно захвачены отношения вызовов между многоязычными сервисами
- Созданное дерево вызовов чётко отображает зависимости между сервисами
- Подтверждена практическая применимость механизма асинхронной маркировки
- Влияние структурных различий: асинхронная модель трассировки OpenTelemetry и синхронная модель Kieker имеют фундаментальные различия
- Эффективность механизма маркировки: схема асинхронной маркировки эффективно обрабатывает сложные модели вызовов приложений микросервисов
- Поддержка кроссязычности: успешно расширена поддержка языков Kieker
- Обработка данных OpenTelemetry: Weber и др. исследовали взаимодействие между OpenTelemetry и Palladio для прогнозирования производительности
- Сжатие данных трассировки: TraceZip предложил схему сжатого хранения данных OpenTelemetry, снижающую потребление памяти на 33,8%
- Преобразование моделей: Groner и др. исследовали взгляды разработчиков на преобразование моделей данных
- Первая работа, реализующая преобразование из OpenTelemetry в Kieker
- Способна выполнять полный аналитический конвейер Kieker
- Сохраняет преимущество низких накладных расходов Kieker
- Успешно реализовано преобразование данных трассировки OpenTelemetry в формат Kieker
- Решена проблема совместимости двух моделей трассировки с использованием механизма асинхронной маркировки
- Расширена поддержка языков Kieker, позволяя анализировать многоязычные приложения микросервисов
- Сложность асинхронной обработки: требуется ручное указание асинхронной маркировки, что увеличивает сложность использования
- Концептуальные различия: фундаментальные различия между двумя моделями трассировки ограничивают полную совместимость
- Рассмотрение производительности: статья не проводит глубокий анализ накладных расходов процесса преобразования
- Полная встроенная поддержка: прямая поддержка формата данных OpenTelemetry в Kieker
- Гибридная трассировка: комбинирование низких накладных расходов Kieker и широкой применимости OpenTelemetry
- Оптимизация производительности: исследование производительности различных реализаций преобразования
- Высокая практическая ценность: решает проблему взаимодействия между двумя важными фреймворками наблюдаемости
- Методологическая инновативность: механизм асинхронной маркировки инновационно решает проблему различий моделей трассировки
- Достаточная верификация: применимость метода подтверждена на примере реального многоязычного приложения
- Архитектурная совместимость: расширение реализовано без нарушения исходной архитектуры
- Недостаточный теоретический анализ: отсутствуют теоретические гарантии корректности и полноты преобразования
- Отсутствие оценки производительности: не предоставлен анализ накладных расходов процесса преобразования
- Ограниченная обработка граничных случаев: ограниченные возможности обработки сложных асинхронных сценариев
- Пользовательский опыт: необходимость ручной маркировки усложняет использование
- Технический вклад: предоставляет важный ориентир для взаимодействия инструментов наблюдаемости
- Практическая ценность: может быть непосредственно применено в существующих сценариях мониторинга микросервисов
- Значение для экосистемы: способствует сотрудничеству между различными инструментами наблюдаемости
- Мониторинг производительности многоязычных архитектур микросервисов
- Сценарии, требующие комбинирования широкой поддержки OpenTelemetry и аналитических возможностей Kieker
- Ситуации, когда существующие пользователи Kieker хотят расширить поддержку языков
- Академические исследования взаимодействия инструментов наблюдаемости
Статья цитирует 9 связанных работ, охватывающих важные исследования в области фреймворков наблюдаемости, приложений микросервисов, преобразования моделей и других смежных областей, обеспечивая прочную теоретическую основу для исследования.
Общая оценка: Это практически ценная статья в области системного программного обеспечения, решающая проблему взаимодействия между двумя важными фреймворками наблюдаемости. Несмотря на недостатки в теоретическом анализе и оценке производительности, предложенное решение имеет значительную практическую ценность и предоставляет ценные инструменты и методы для области мониторинга микросервисов.