Skip to content

ОтелЭкспортерМетрик ​

Экспортер метрик в формате OTLP.

Описание ​

Реализует экспорт метрик по спецификации OpenTelemetry (OtlpMetricExporter). Отправляет данные метрик на адрес /v1/metrics через любой транспорт: ОтелHttpТранспорт, ОтелGrpcТранспорт, ОтелКонсольныйТранспорт или ОтелВПамятьТранспорт.

Поддерживает типы метрик: Сумма, Датчик, Гистограмма, ЭкспоненциальнаяГистограмма и Сводка (Summary от продюсеров метрик; у датчика и сводки временной агрегации нет). Перед отправкой выполняет валидацию совместимости агрегаций и темпоральности. Метаданные метрики (ОтелДанныеМетрики.Метаданные()) передаются в поле metadata.

Все методы безопасны для конкурентного вызова. Поля состояния либо иммутабельны (назначаются в конструкторе), либо хранятся в АтомарноеБулево. Экспорт идёт в вызывающем потоке и ограничен сроком: транспорт получает время, оставшееся до срока, и укладывает в него все попытки отправки и паузы между ними.

Конструктор ​

bsl
Новый ОтелЭкспортерМетрик(
    Транспорт,
    СелекторВременнойАгрегации,
    ПутьСигнала,
    ТаймаутМс,
    АгрегацияГистограммПоУмолчанию,
    НовыйЗакрыватьТранспорт
)
ПараметрТипПо умолчаниюОписание
ТранспортОтелHttpТранспорт, ОтелGrpcТранспорт, ОтелКонсольныйТранспорт, ОтелВПамятьТранспорт—Транспорт для отправки данных
СелекторВременнойАгрегацииУниФункцияНеопределеноФункция-селектор: Применить(ТипИнструмента) → Число; определяет временну́ю агрегацию для каждого типа инструмента. Готовые селекторы — ОтелСелекторВременнойАгрегации
ПутьСигналаСтрока"/v1/metrics"Путь OTLP-адреса для отправки метрик
ТаймаутМсЧисло10000Таймаут экспорта в миллисекундах (OTLP Timeout), 0 — без ограничения
АгрегацияГистограммПоУмолчаниюСтрока, Соответствие"explicit_bucket_histogram"Агрегация гистограмм по умолчанию (OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION); читатель метрик берёт её у экспортера
НовыйЗакрыватьТранспортБулевоЛожьИстина — транспорт создала библиотека (автоконфигурация, файл конфигурации), экспортер закрывает его вместе с собой. Ложь — транспорт передал пользователь и закрывает его сам: один транспорт может обслуживать несколько экспортеров

Методы ​

Экспортировать ​

Экспортирует данные метрик. Перед отправкой валидирует совместимость типов метрик и темпоральности: данные неподдерживаемого типа или без временной агрегации (AggregationTemporality) не экспортируются — метод пишет предупреждение и возвращает Ложь. По спецификации OTel Export() не должен блокироваться бесконечно: срок экспорта — меньший из таймаута вызова и таймаута экспортера (незаданный или 0 таймаут не ограничивает). Отправка идёт в вызывающем потоке, транспорт получает время, оставшееся до срока.

ПараметрТипПо умолчаниюОписание
МассивДанныхМетрикМассив из ОтелДанныеМетрики—Данные метрик для экспорта
ТаймаутЧислоНеопределеноТаймаут вызова в миллисекундах; Неопределено или 0 — действует только таймаут экспортера

Возвращает: Булево — Истина, если экспорт успешен; Ложь при ошибке или по истечении срока

СброситьБуфер ​

Принудительно отправляет все накопленные данные. Для синхронного экспортера буферизация отсутствует — всегда возвращает успех. Операция тривиально потокобезопасна (no-op).

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло0Таймаут в миллисекундах (0 — без ограничения)

Возвращает: ОтелРезультатЭкспорта — результат операции

Закрыть ​

Завершает работу экспортера. После вызова метод Экспортировать() возвращает Ложь. Если транспорт создала библиотека (НовыйЗакрыватьТранспорт), первый вызов закрывает и транспорт. Операция идемпотентна: повторные вызовы ничего не делают.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

Возвращает: ОтелРезультатЗакрытия — результат закрытия; ошибка, если не удалось закрыть транспорт

ПринудительноВыгрузитьСРезультатом ​

Принудительно выгружает накопленные данные и возвращает результат. Для синхронного экспортера буферизация отсутствует — операция всегда успешна, если экспортер не закрыт.

ПараметрТипПо умолчаниюОписание
ТаймаутМсЧисло30000Таймаут операции в миллисекундах

Возвращает: ОтелРезультатЗакрытия — результат операции

ПолучитьВременнуюАгрегацию ​

Возвращает временну́ю агрегацию для указанного типа инструмента.

ПараметрТипПо умолчаниюОписание
ТипИнструментаСтрока—Тип инструмента: "counter", "up_down_counter", "histogram", "gauge" и т.д.

Возвращает: Число — значение из ОтелВременнаяАгрегация

АгрегацияПоУмолчанию ​

Возвращает агрегацию по умолчанию для вида инструмента: читатель метрик берёт её у экспортера. Гистограммам — агрегация гистограмм экспортера, остальным видам — агрегация по умолчанию.

ПараметрТипПо умолчаниюОписание
ВидИнструментаСтрока—Вид инструмента: "Counter", "Histogram", "Gauge" и т.д.

Возвращает: Строка, Соответствие — агрегация; "default" — агрегация по умолчанию для вида

Пример ​

bsl
#Использовать opentelemetry

// Создать экспортер с HTTP-транспортом
Транспорт = Новый ОтелHttpТранспорт("http://localhost:4318");
Экспортер = Новый ОтелЭкспортерМетрик(Транспорт);

// С другим селектором временной агрегации из ОтелСелекторВременнойАгрегации
Транспорт = Новый ОтелGrpcТранспорт("http://localhost:4317");
Экспортер = Новый ОтелЭкспортерМетрик(Транспорт, ОтелСелекторВременнойАгрегации.ПредпочтительноДельта());

// Закрыть после использования
Экспортер.Закрыть();