Введение в открытую телеметрию
Введение в открытую телеметрию

Введение в открытую телеметрию

Что такое открытая телеметрия

открытая телеметрия представляет собой набор отCNCF является лидером стандартного протокола для облачной наблюдения.,полное имя:OpenTelemetry Protocol,аббревиатураOTLP

Фон, созданный opentelemetry

Наблюдаемость — очень важная область Trace Существует два отраслевых ориентира: одиндаOpenTracing,ДругойодинOpenCensus

  • OpenTracing на самом деле является спецификацией,Jaeger основан на реализации opentracing из инструмента с открытым исходным кодом.,
  • OpenCensus — это инструмент измерения с открытым исходным кодом, созданный Google. Проще говоря, функции этих двух компаний в области наблюдения сильно пересекаются. Поэтому под руководством CNCF они объединились, чтобы сформировать проект opentelemetry и penCensus, которые совместно продвигают открытую телеметрию. На официальных сайтах двух Ехехе заявлено, что он практически больше не будет поддерживаться.

В то же время opentelemetry также обеспечивает корреляцию между трассировкой, журналированием и метриками.

opentrace+openCensus=openTelemetry

Основная работа открытой телеметрии

  • 1. Установление спецификаций и унификация протоколов,Спецификации включают передачу данных и спецификации API.,протоколизединое включение:HTTP Поддержка стандартов W3C и стандартов протоколов таких платформ, как GRPC.
  • 2. Внедрение и интеграция многоязычного SDK.,Пользователи могут автоматически внедрять код с помощью SDK и скрывать его вручную.,В то же время он обеспечивает интегрированную поддержку других сторонних библиотек (Log4j, LogBack и т. д.).
  • 3. Внедрение системы сбора данных,когда базируетсяOpenCensus ServiceизCollection System,В том числе Агент и Коллектор.

Статус OpenTelemetry

OpenTelemetry хочет решить проблему унификации наблюдаемости. Она предоставляет набор API и SDK для стандартизации сбора и передачи данных телеметрии. OpenTelemetry не хочет переписывать все компоненты, а максимально повторно использует текущие тенденции отрасли. Обычно используемые инструменты в различных областях предоставляют безопасный, независимый от поставщика протокол и компонент, который можно использовать для формирования конвейера и отправки данных на различные серверные части по мере необходимости.

Архитектура OpenTelemetry

image
image

opentelemetry также представляет собой подключаемую архитектуру,Будут соответствующие клиентские компоненты для разных языков разработки.,ВызовInstrumenttation,То есть закопать в коде точку вызова изapi/sdk для сбора данных телеметрии.

Это версия SDK для Go https://github.com/open-telemetry/opentelemetry-go

opentelemetry определяет стандарты для нескольких аспектов наблюдаемости

Спецификация протокола данных

Tracing Signal

Распределенная трассировка — это набор событий, которые запускаются одной логической операцией и объединяются между компонентами приложения. Распределенная трассировка содержит события, охватывающие границы процесса, сети и безопасности.

Traces

Трассировка неявно определяется Span и может рассматриваться как направленный ациклический граф (DAG) Span.

Spans

Span представляет операции в транзакции, и каждый Span инкапсулирует следующее состояние:

  • Название операции
  • Временные метки начала и окончания
  • свойство(Attributes):Серия пар ключ-значение
  • Коллекция из 0 или более событий (Events), каждое из которых представляет собой кортеж (метка времени, имя, атрибут), имя должно быть строкой.
  • Идентичность родительского Span
  • и 0 одно или несколько причинно связанных Span Связь(Links),По теме: Span из SpanContext
  • Цитировать Span Необходимый SpanContext информация
SpanContext

Представляет всю информацию, которая идентифицирует диапазон в трассировке и должна распространяться на дочерние диапазоны и за пределы границ процесса. SpanContext содержит идентификаторы и параметры отслеживания, которые передаются из родительского Span в дочерний Span.

  • TraceId:trace из идентификатора. Глобально уникальный, генерируется случайно 16 байты. TraceId Используется для преобразования перекрестного процесса в конкретный trace извсе span Сгруппируйтесь вместе.
  • SpanId:span из идентификатора. Глобально уникальный, генерируется случайно 8 байты. когда передается ребенку Span , идентификатор станет подзаголовком Span изотец span id 。
  • TraceFlags:trace из варианта. Представлено в виде одного байта (растровое изображение bitmap)
  • Sampling бит: представляет trace Будет ли производиться выборка из битов (маска 0x1
  • Tracestate: содержит контекст отслеживания системы в списке пар ключ-значение. Трассестейт Разрешить различным поставщикам распространять дополнительную информацию, использовать их из наследия Id форматы для взаимодействия.
Ссылки между пролетами

Span должен быть связан с нулевым или более причинно связанными другими Spans (как определено SpanContext). Ссылки могут указывать на Span внутри трассировки или между трассировками.

Когда трассировка входит в границу доверия службы и политика службы требует создания новой трассировки без доверия входящему контексту трассировки, ее можно использовать для представления связи между исходной трассировкой и последующей трассировкой. Вновь связанная трассировка также может представлять собой длительную асинхронную операцию обработки данных, инициированную одним из многих входящих запросов.

Metric Signal

OpenTelemetry Позволяет агрегацию с предопределенными наборами тегов. оригинальных измерения или мера.

использовать OpenTelemetry API Запись оригинальных измерений позволяет конечному пользователю решить, какой алгоритм агрегирования следует использовать для этой меры, а также определить метки (измерения). Он будет использоваться как gRPC из клиентской библиотеки, Запись оригинальных измерений server_latency и received_bytes . Таким образом, конечный пользователь решает, какой тип совокупного значения следует собирать из этих необработанных измерений: это может быть простое среднее значение или точный расчет гистограммы.

использовать OpenTelemetry API Также важно записывать метрики для заранее определенных агрегатов. это позволяет собирать CPU и Памятьиспользовать,илидакак длина очередиизпростая мера。

Запись оригинальных измерений

для Запись оригинальных измеренияиз основных категорий являются Measure и Measurement 。Можетиспользовать OpenTelemetry API записать дополнительный контекст Measurement список. Таким образом, пользователи могут агрегировать их, определив Measurement и используйте контекст передачи, чтобы определить результирующую меру дополнительных измерений.

Measure

Measure Описание записей библиотеки из одного значения изтипа. Определенные общедоступные методы измерения из библиотеки и агрегирование независимых измерений в Metric серединаизмежду приложениямиизсвязь。Measure Зависит от наименования, описания Значение йода из идентификации единицы.

Measurement

Measurement описан как Measure собиратьизодно значение,Measuremrnt это пустой интерфейс, в SDK определено в.

Записывайте показатели, используя предопределенные агрегаты.

Базовый класс для всех типов предопределенных совокупных показателей называется Metric , который определяет основные свойства измерения, такие как имя и метка. наследовать Metric Из класса определяется совокупность типов одиночного измерения или точки структуры. API Определены следующие типы предопределенных совокупных показателей:

  • Counter metric Сообщает о мгновенных измерениях. Прилавок Значение может увеличиваться или оставаться неизменным, но не может падать или быть отрицательным. Существует два типа измеряемых значений.тип:double и long
  • Gauge metric Сообщает цифровые значения мгновенных измерений. Измерять Значения могут повышаться или падать, либо быть отрицательными. Существует два типа измеряемых значений.тип:double и long

API Позволяет строить выбранные типы Metric ,SDK определяет, что экспортировать Metric Как запросить значение.

каждого типа Metric иметь собственный API Запишите значения, которые необходимо агрегировать. API Поддержка двухтактной модели (push and pull модель), чтобы установить Metric ценить.

Модель данных метрик и SDK

на основе metrics.proto Создайте метрическую модель данных(Metrics Data Model),этотмодель data определяет три семантики: API модель событий useiz (Событие model)、SDK и OTLP использоватьиз in-flight модель данных, указывает, как инструмент экспорта интерпретирует in-flight модель модель временных рядов данных (TimeSeries model)。

Различные инструменты экспорта имеют разные возможности (например, поддержка модели данные) и ограничения (например, какие символы разрешены в качестве ключей тегов). все Инструменты экспорта переданы OpenTelemetry SDK Интерфейс производителя метрик (Metric Producer интерфейс) из метрической модели Данные о потреблении в данных.

Следовательно, метрики При минимальных ограничениях на данные (например, какие символы разрешены в ключах), обработка Metrics изCode следует избегать проверки и очистки. Напротив,Передача данных на серверную часть,Положитесь на серверную часть для выполнения проверки,и возвращает ошибку из серверной части.

Log Signal

модель данных

модель данные определены OpenTelemetry Как понимать журналы и события

Baggage Signal

Кроме trace Распространение OpenTelemetry Также предоставлено Baggage для распространения пар ключ-значение。Baggage Используется для индексации наблюдаемых событий в службе, которая содержит свойства, предоставленные предыдущими службами в той же транзакции, что помогает установить причинно-следственные связи между событиями.

Хотя Baggage Может использоваться в качестве прототипа для других сквозных задач, но этот механизм в первую очередь предназначен для OpenTelemetry Система наблюдаемости переоценить.

Эти значения можно получить из Baggage середина Потребление,и как мера дополнительного измерения,Или журналируйте и отслеживайте и используйте дополнительный контекст. Несколько примеров:

  • Веб-сервисы могут получить выгоду от включения контекста отправляемого запроса из службы.
  • SaaS Поставщик может включить информацию о лице, ответственном за запрос. API Пользователь или токен из контекста
  • Определить, с какой конкретной версией браузера связан сбой в службе обработки изображений

Resources

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 Наблюдаемость из библиотеки под названием Библиотека инструментов。Каждый язык Библиотека инструментов

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose