• Русский
  • Основные понятия

    Telemetry

    Телеметрия — это данные, генерируемые системами и их поведением, включая трассы, метрики и логи.

    OpenTelemetry

    OpenTelemetry — это фреймворк и набор инструментов для наблюдаемости, предназначенный для создания и управления телеметрическими данными, такими как трассы, метрики и логи. Важно, что OpenTelemetry не зависит от поставщика, то есть может работать с различными системами наблюдаемости, включая open-source инструменты, такие как Jaeger и Prometheus, а также коммерческие продукты.

    Span

    Span — это базовый строительный блок распределённого трассирования, представляющий конкретную операцию или единицу работы. Каждый span фиксирует определённые действия в рамках запроса, помогая понять детали того, что происходило во время выполнения операции.

    Span содержит имя, временные данные, структурированные сообщения логов и другие метаданные (атрибуты), которые вместе дают полную картину операции.

    Trace

    Trace фиксирует путь запроса (от приложения или конечного пользователя) по много-сервисной архитектуре (например, микросервисы и serverless-приложения).

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

    Без трасс было бы довольно сложно определить коренную причину проблем с производительностью в распределённых системах. Трассы упрощают отладку и понимание распределённых систем, разбивая поток запросов через них.

    Instrumentation

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

    С помощью OpenTelemetry вы можете инструментировать ваш код двумя основными способами:

    1. Решения на основе кода: используя официальные API и SDK для большинства языков
    2. Решения с нулевым инструментированием

    Решения на основе кода обеспечивают более глубокое понимание и более богатые телеметрические данные изнутри вашего приложения. Вы можете генерировать телеметрию в вашем приложении с помощью OpenTelemetry API, что является важным дополнением к данным, создаваемым решениями с нулевым инструментированием.

    Решения с нулевым инструментированием отлично подходят для быстрого старта или когда вы не можете изменить приложение, из которого нужно получить телеметрию. Они могут предоставлять богатые телеметрические данные через используемые библиотеки или среду выполнения. Другими словами, они передают информацию о событиях, происходящих на границах (Edges) приложения.

    Эти два подхода могут использоваться одновременно.

    OpenTelemetry Collector

    OpenTelemetry Collector — это агент, не зависящий от поставщика, который может принимать, обрабатывать и экспортировать телеметрические данные. Он поддерживает приём данных в различных форматах (таких как OTLP, Jaeger, Prometheus и многие коммерческие/проприетарные инструменты) и отправку этих данных в один или несколько бекендов. Также поддерживается обработка и фильтрация телеметрии перед экспортом.

    Для дополнительной информации смотрите Collector.

    Jaeger

    Jaeger — это open-source система распределённого трассирования. Она предназначена для мониторинга и диагностики сложных распределённых систем на основе микросервисной архитектуры, помогая разработчикам визуализировать трассы запросов, анализировать узкие места производительности и устранять аномалии. Jaeger совместим со стандартом OpenTracing (теперь частью OpenTelemetry), поддерживает множество языков программирования и хранилищ данных, и является ключевым инструментом наблюдаемости в облачно-нативной среде.