ОтелЭкспортерМетрик
Экспортер метрик в формате OTLP.
Описание
Реализует экспорт метрик по спецификации OpenTelemetry (OtlpMetricExporter). Отправляет данные метрик на адрес /v1/metrics через любой транспорт: ОтелHttpТранспорт, ОтелGrpcТранспорт или ОтелВПамятьТранспорт.
Поддерживает типы метрик: Сумма, Датчик, Гистограмма, ЭкспоненциальнаяГистограмма. Перед отправкой выполняет валидацию совместимости агрегаций и темпоральности.
Все методы безопасны для конкурентного вызова. Поля состояния либо иммутабельны (назначаются в конструкторе), либо хранятся в АтомарноеБулево.
Конструктор
Новый ОтелЭкспортерМетрик(
Транспорт,
СелекторВременнойАгрегации,
ПутьСигнала,
ТаймаутМс
)| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Транспорт | ОтелHttpТранспорт, ОтелGrpcТранспорт, ОтелВПамятьТранспорт | — | Транспорт для отправки данных |
СелекторВременнойАгрегации | УниФункция | Неопределено | Функция-селектор: Применить(ТипИнструмента) → Число; определяет временну́ю агрегацию для каждого типа инструмента |
ПутьСигнала | Строка | "/v1/metrics" | Путь OTLP-адреса для отправки метрик |
ТаймаутМс | Число | 10000 | Таймаут экспорта в миллисекундах |
Методы
Экспортировать
Экспортирует данные метрик. Перед отправкой валидирует совместимость типов метрик и темпоральности. По спецификации OTel не блокируется бесконечно.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
МассивДанныхМетрик | Массив из ОтелДанныеМетрики | — | Данные метрик для экспорта |
Таймаут | Число | Неопределено | Таймаут в миллисекундах; если не задан — используется значение из конструктора |
Возвращает: Булево — Истина, если экспорт успешен; Ложь при ошибке или таймауте
СброситьБуфер
Принудительно отправляет все накопленные данные. Для синхронного экспортера буферизация отсутствует — всегда возвращает успех. Операция тривиально потокобезопасна (no-op).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 0 | Таймаут в миллисекундах (0 — без ограничения) |
Возвращает: ОтелРезультатЭкспорта — результат операции
Закрыть
Завершает работу экспортера. После вызова метод Экспортировать() возвращает Ложь. Операция идемпотентна: повторные вызовы безопасны.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах |
Возвращает: ОтелРезультатЗакрытия — результат закрытия
ПринудительноВыгрузитьСРезультатом
Принудительно выгружает накопленные данные и возвращает результат. Для синхронного экспортера буферизация отсутствует — операция всегда успешна, если экспортер не закрыт.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах |
Возвращает: ОтелРезультатЗакрытия — результат операции
ПолучитьВременнуюАгрегацию
Возвращает временну́ю агрегацию для указанного типа инструмента.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТипИнструмента | Строка | — | Тип инструмента: "counter", "up_down_counter", "histogram", "gauge" и т.д. |
Возвращает: Число — значение из ОтелВременнаяАгрегация
Пример
#Использовать opentelemetry
// Создать экспортер с HTTP-транспортом
Транспорт = Новый ОтелHttpТранспорт("http://localhost:4318");
Экспортер = Новый ОтелЭкспортерМетрик(Транспорт);
// С кастомным селектором временной агрегации
// (функция, которая возвращает тип агрегации по типу инструмента)
Транспорт = Новый ОтелGrpcТранспорт("http://localhost:4317");
Экспортер = Новый ОтелЭкспортерМетрик(Транспорт, МойСелектор);
// Закрыть после использования
Экспортер.Закрыть();