открытая телеметрия представляет собой набор отCNCF является лидером стандартного протокола для облачной наблюдения.,полное имя:OpenTelemetry Protocol
,аббревиатураOTLP
。
Наблюдаемость — очень важная область Trace
Существует два отраслевых ориентира: одиндаOpenTracing,ДругойодинOpenCensus
В то же время opentelemetry также обеспечивает корреляцию между трассировкой, журналированием и метриками.
opentrace+openCensus=openTelemetry
OpenTelemetry хочет решить проблему унификации наблюдаемости. Она предоставляет набор API и SDK для стандартизации сбора и передачи данных телеметрии. OpenTelemetry не хочет переписывать все компоненты, а максимально повторно использует текущие тенденции отрасли. Обычно используемые инструменты в различных областях предоставляют безопасный, независимый от поставщика протокол и компонент, который можно использовать для формирования конвейера и отправки данных на различные серверные части по мере необходимости.
opentelemetry также представляет собой подключаемую архитектуру,Будут соответствующие клиентские компоненты для разных языков разработки.,ВызовInstrumenttation,То есть закопать в коде точку вызова изapi/sdk для сбора данных телеметрии.
Это версия SDK для Go https://github.com/open-telemetry/opentelemetry-go
metrics
: https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.protologs
: https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/logs/v1/logs.prototrace
:https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/trace/v1/trace.protoresources
:https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/resource/v1/resource.protorpc_server_handled_seconds_bucketРаспределенная трассировка — это набор событий, которые запускаются одной логической операцией и объединяются между компонентами приложения. Распределенная трассировка содержит события, охватывающие границы процесса, сети и безопасности.
Трассировка неявно определяется Span и может рассматриваться как направленный ациклический граф (DAG) Span.
Span представляет операции в транзакции, и каждый Span инкапсулирует следующее состояние:
Представляет всю информацию, которая идентифицирует диапазон в трассировке и должна распространяться на дочерние диапазоны и за пределы границ процесса. SpanContext содержит идентификаторы и параметры отслеживания, которые передаются из родительского Span в дочерний Span.
0x1
)Span должен быть связан с нулевым или более причинно связанными другими Spans (как определено SpanContext). Ссылки могут указывать на Span внутри трассировки или между трассировками.
Когда трассировка входит в границу доверия службы и политика службы требует создания новой трассировки без доверия входящему контексту трассировки, ее можно использовать для представления связи между исходной трассировкой и последующей трассировкой. Вновь связанная трассировка также может представлять собой длительную асинхронную операцию обработки данных, инициированную одним из многих входящих запросов.
OpenTelemetry Позволяет агрегацию с предопределенными наборами тегов. оригинальных измерения или мера.
использовать OpenTelemetry API Запись оригинальных измерений позволяет конечному пользователю решить, какой алгоритм агрегирования следует использовать для этой меры, а также определить метки (измерения). Он будет использоваться как gRPC из клиентской библиотеки, Запись оригинальных измерений server_latency и received_bytes . Таким образом, конечный пользователь решает, какой тип совокупного значения следует собирать из этих необработанных измерений: это может быть простое среднее значение или точный расчет гистограммы.
использовать OpenTelemetry API Также важно записывать метрики для заранее определенных агрегатов. это позволяет собирать CPU и Памятьиспользовать,илидакак длина очередиизпростая мера。
для Запись оригинальных измеренияиз основных категорий являются Measure
и Measurement
。Можетиспользовать OpenTelemetry API записать дополнительный контекст Measurement
список. Таким образом, пользователи могут агрегировать их, определив Measurement
и используйте контекст передачи, чтобы определить результирующую меру дополнительных измерений.
Measure
Описание записей библиотеки из одного значения изтипа. Определенные общедоступные методы измерения из библиотеки и агрегирование независимых измерений в Metric
серединаизмежду приложениямиизсвязь。Measure
Зависит от наименования, описания Значение йода из идентификации единицы.
Measurement
описан как Measure
собиратьизодно значение,Measuremrnt
это пустой интерфейс, в SDK определено в.
Базовый класс для всех типов предопределенных совокупных показателей называется Metric
, который определяет основные свойства измерения, такие как имя и метка. наследовать Metric
Из класса определяется совокупность типов одиночного измерения или точки структуры. API Определены следующие типы предопределенных совокупных показателей:
double
и long
。double
и long
。API Позволяет строить выбранные типы Metric
,SDK определяет, что экспортировать Metric
Как запросить значение.
каждого типа Metric
иметь собственный API Запишите значения, которые необходимо агрегировать. API Поддержка двухтактной модели (push and pull модель), чтобы установить Metric
ценить.
на основе metrics.proto Создайте метрическую модель данных(Metrics Data Model),этотмодель data определяет три семантики: API модель событий useiz (Событие model)、SDK и OTLP использоватьиз in-flight модель данных, указывает, как инструмент экспорта интерпретирует in-flight модель модель временных рядов данных (TimeSeries model)。
Различные инструменты экспорта имеют разные возможности (например, поддержка модели данные) и ограничения (например, какие символы разрешены в качестве ключей тегов). все Инструменты экспорта переданы OpenTelemetry SDK Интерфейс производителя метрик (Metric Producer интерфейс) из метрической модели Данные о потреблении в данных.
Следовательно, метрики При минимальных ограничениях на данные (например, какие символы разрешены в ключах), обработка Metrics изCode следует избегать проверки и очистки. Напротив,Передача данных на серверную часть,Положитесь на серверную часть для выполнения проверки,и возвращает ошибку из серверной части.
модель данные определены OpenTelemetry Как понимать журналы и события
Кроме trace Распространение OpenTelemetry Также предоставлено Baggage
для распространения пар ключ-значение。Baggage
Используется для индексации наблюдаемых событий в службе, которая содержит свойства, предоставленные предыдущими службами в той же транзакции, что помогает установить причинно-следственные связи между событиями.
Хотя Baggage
Может использоваться в качестве прототипа для других сквозных задач, но этот механизм в первую очередь предназначен для OpenTelemetry Система наблюдаемости переоценить.
Эти значения можно получить из Baggage
середина Потребление,и как мера дополнительного измерения,Или журналируйте и отслеживайте и используйте дополнительный контекст. Несколько примеров:
Resources
Получите информацию о записанном объекте данных телеметрии. Например, Кубернетес Метрики, предоставляемые контейнерами, можно связать с указанными кластерами, пространствами имен и модулями. и Имя контейнераизресурс。Resources
Можно собрать всю иерархию идентификаторов объектов, которые могут описывать хост в облаке, конкретный контейнер или процесс, запускающий приложение.
все OpenTelemetry Сквозные проблемы, например trace и metric , разделяя лежащее в основе Context
Механизм хранения состояния в распределенной трассировке и доступа к нему через Span данные жизненного цикла.
OpenTelemetry использовать Propagators
сериализовать и десериализовать сквозной фокус на значение пункта, например Span
(обычно только SpanContext изчасть)и Baggage
. другой Propagators
Тип определяет конкретный транспорт и привязку к ограничениям типизации данных.
коммуникатор API определяет Propagator
тип
TextMapPropagator
Внедряйте значения в вектор и извлекайте значения из вектора в виде текста.OpenTelemetry Коллектор — это набор компонентов, доступных на OpenTelementry или другие библиотеки мониторинга/отслеживания (Jaeger, Prometheus и т. д.) совокупность выполненных процессов traces、metrics è Другие данные телеметрии (например, журналы) и агрегированные è Интеллектуальная выборка, экспорт traces и metrics к одному или нескольким серверным модулям мониторинга/отслеживания. Коллектор позволяет обогащать и преобразовывать собранные данные телеметрии (например, добавлять дополнительные атрибуты или удалять отдельных лиц).
Сборщики OpenTelemetry имеют два основных режима работы: агент (демон, который запускается локально вместе с приложением) и сборщик (служба, которая запускается независимо).
Вызывается для включения другой библиотеки OpenTelemetry Наблюдаемость из библиотеки под названием Библиотека инструментов。Каждый язык Библиотека инструментов