ОтелПровайдерМетрик
Провайдер метрик (MeterProvider) — центральная точка управления метрами и читателями метрик.
Описание
ОтелПровайдерМетрик реализует спецификацию OpenTelemetry MeterProvider. Хранит кэш объектов ОтелМетр по идентичности области (имя библиотеки, версия, адрес схемы и атрибуты scope), управляет представлениями (Views) и читателями метрик. Поддерживает несколько читателей.
У каждого читателя свои потоки метрик: агрегацию и лимит мощности по умолчанию для вида инструмента, а также временную агрегацию задаёт читатель, поэтому сбор одним читателем не сбрасывает и не искажает данные другого. Каждый совпавший с инструментом View даёт отдельный поток. Изменения конфигурации (Views, агрегация гистограмм по умолчанию) применяются и к ранее выданным метрам.
Все публичные методы потокобезопасны.
Рекомендуется создавать через ОтелПостроительПровайдераМетрик.
Методы
ПостроительМетра
Создаёт построитель метра (MeterBuilder). Аналог Java SDK: MeterProvider.meterBuilder("name").
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ИмяБиблиотеки | Строка | — | Имя инструментирующей библиотеки |
Возвращает: ОтелПостроительМетра
ПолучитьМетр
Создаёт или возвращает из кэша метр для указанной библиотеки. После Закрыть() и у no-op провайдера, который действует, пока SDK не настроен, возвращает no-op метр: он не проверяет параметры и не пишет в лог, его инструменты выключены и не хранят измерений.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ИмяБиблиотеки | Строка | — | Имя инструментирующей библиотеки |
ВерсияБиблиотеки | Строка | "" | Версия библиотеки |
АтрибутыОбласти | ОтелАтрибуты | Неопределено | Атрибуты InstrumentationScope |
АдресСхемы | Строка | "" | URL схемы телеметрии |
Возвращает: ОтелМетр
Ресурс
Возвращает ресурс провайдера.
Возвращает: ОтелРесурс
ЧитательМетрик
Возвращает первый зарегистрированный читатель метрик (для обратной совместимости).
Возвращает: ОтелПериодическийЧитательМетрик, Неопределено
ЧитателиМетрик
Возвращает массив всех зарегистрированных читателей метрик.
Возвращает: Массив
ФильтрЭкземпляров
Возвращает фильтр exemplars провайдера.
Возвращает: Число — константа ОтелФильтрЭкземпляров: ВсегдаВключен(), ВсегдаВыключен() или ПоТрассировке()
СброситьБуфер
Принудительно экспортирует все накопленные метрики через все читатели. У каждого читателя вызывается его собственный ForceFlush — ПринудительноВыгрузитьСРезультатом (сбор, экспорт и сброс буфера экспортера), а у читателя без этого метода (например, pull-читателя) — СброситьБуфер. Сброс вызывается у каждого читателя, даже если предыдущий бросил исключение; все читатели укладываются в общий срок — каждому передаётся оставшееся время.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 0 | Таймаут в миллисекундах (0 — без ограничения) |
Возвращает: ОтелРезультатЭкспорта — ошибка, если хотя бы один читатель сообщил о сбое или бросил исключение; иначе таймаут, если истёк срок или читатель сообщил о таймауте; иначе успех
Закрыть
Завершает работу провайдера: отключает синхронные инструменты метров, в том числе те, что метры создадут после закрытия (наблюдаемые инструменты и мульти-callback-и, созданные после закрытия, — no-op и не хранят callback-и), и закрывает читателей в пределах общего срока — каждого, даже после исключения в предыдущем и после истечения срока (тогда читатель получает 1 мс и завершается без ожидания). Идемпотентен: повторный вызов возвращает успех. После закрытия ПолучитьМетр() возвращает no-op метр.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах (0 — без ограничения; читателям передаётся по 30000) |
Возвращает: ОтелРезультатЗакрытия — ошибка, если хотя бы один читатель вернул ошибку или бросил исключение (описания ошибок перечислены через ; ); иначе таймаут, если истёк срок или читатель сообщил о таймауте; иначе успех
ПринудительноВыгрузитьСРезультатом
Принудительно выгружает все накопленные метрики через читателей так же, как СброситьБуфер. После Закрыть() возвращает ошибку.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах |
Возвращает: ОтелРезультатЗакрытия
СброситьБуферАсинхронно
Асинхронно сбрасывает буфер.
Возвращает: Обещание
ЗакрытьАсинхронно
Асинхронно завершает работу провайдера.
Возвращает: Обещание
ЗарегистрироватьПредставление
Регистрирует представление (View) с селектором инструментов. View применяется и к инструментам ранее выданных метров: их потоки разрешаются заново, измерения после регистрации попадают в потоки с новой конфигурацией. Потоки, конфигурация которых не изменилась, сохраняют накопленные данные.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Селектор | ОтелСелекторИнструментов | — | Селектор инструментов |
Представление | ОтелПредставление | — | Представление |
ПолучитьПредставления
Возвращает зарегистрированные представления.
Возвращает: Массив из Соответствие — пары с ключами Селектор и Представление
УстановитьАгрегациюГистограммПоУмолчанию
Устанавливает агрегацию гистограмм по умолчанию для метров провайдера без читателей (у читателей своя агрегация по умолчанию для вида инструмента). Применяется и к ранее выданным метрам. Соответствует OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Значение | Строка | — | explicit_bucket_histogram или base2_exponential_bucket_histogram |
УстановитьТаймаутОбратныхВызововМс
Задаёт таймаут callback-ов асинхронных инструментов и мульти-callback-ов метров провайдера (по умолчанию 30000 мс). Применяется и к ранее выданным метрам. См. ОтелМетр.УстановитьТаймаутОбратныхВызововМс.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Значение | Число | — | Таймаут в миллисекундах; 0 — callback-и выполняются в потоке сбора без таймаута |
Внутренние методы
Экспортированы только для вызова из других модулей SDK (в OneScript нет внутренней видимости), приложению вызывать их не нужно:
УстановитьВключен— выключает провайдер: им выключены no-op провайдер, который ОтелГлобальный возвращает, пока SDK не настроен, и провайдер SDK сdisabled: trueв файле конфигурации. Выключенный провайдер выдаёт no-op метры;Включен—Ложьу выключенного провайдера. Закрытие признак не меняет.
Пример
Провайдер = Новый ОтелПостроительПровайдераМетрик()
.УстановитьРесурс(Ресурс)
.ЗарегистрироватьЧитатель(Читатель)
.Построить();
Метр = Провайдер.ПолучитьМетр("мой-сервис", "1.0.0");
Счетчик = Метр.СоздатьСчетчик("запросы");
Счетчик.Добавить(1);
// Завершение работы
Провайдер.Закрыть();