Skip to content

ОтелСелекторИнструментов ​

Селектор инструментов (InstrumentSelector) — критерии, по которым представление (View) выбирает инструменты.

Описание ​

Селектор передаётся вместе с представлением в ЗарегистрироватьПредставление(Селектор, Представление)построителя провайдера метрик или провайдера метрик. Для каждого инструмента SDK проверяет селекторы всех зарегистрированных View: каждый View, селектор которого выбрал инструмент, даёт отдельный поток метрики у каждого читателя, а инструмент, который не выбрал ни один селектор, получает поток по умолчанию (правила применения View — на странице ОтелПредставление). Селекторы проверяются при создании инструмента и при регистрации View: View, зарегистрированный после создания инструмента, применяется к измерениям, записанным после регистрации.

Критерии селектора:

КритерийС чем сравниваетсяСравнение
Имяимя инструментабез учёта регистра; "*" — любой инструмент
ТипИнструментавид инструментаточное, с учётом регистра
ИмяМетраимя метра — имя инструментирующей библиотеки из ПолучитьМетрточное, с учётом регистра
Единицаединица измерения инструментаточное, с учётом регистра (ms и MS — разные единицы)
ВерсияМетраверсия метраточное, с учётом регистра
АдресСхемыМетраадрес схемы метраточное, с учётом регистра

Незаданный критерий (Неопределено) пропускает любые инструменты. Заданные критерии объединяются по «И»: селектор выбирает инструмент, только если совпали все заданные критерии. Селектор без критериев выбирает все инструменты.

Шаблонов в критериях нет. Особое значение имеет только имя "*" целиком; * и ? внутри имени — обычные символы: селектор "http.*" выбирает только инструмент с именем http.*, а не все инструменты с префиксом http..

Вид инструмента — строка: Counter, UpDownCounter, Histogram, Gauge, ObservableCounter, ObservableUpDownCounter, ObservableGauge. Единица инструмента, созданного без единицы измерения, — пустая строка.

Если View задаёт НовоеИмя, селектор должен выбирать не больше одного инструмента, иначе несколько инструментов получат одно имя метрики (спецификация Metrics SDK, раздел View). Для такого View с селектором без точного имени (Имя не задано или "*") метр пишет предупреждение в лог. Если потоки одного читателя всё же получили одно имя, все они экспортируются, в лог пишется предупреждение о конфликте идентичности метрик.

Критерии ТипИнструмента и Единица разводят одноимённые инструменты разного вида или единицы: при такой повторной регистрации метр пишет в лог предупреждение и советует View с селектором по имени и виду (или единице) и новым именем метрики.

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

bsl
Новый ОтелСелекторИнструментов(Имя, ТипИнструмента, ИмяМетра, Единица, ВерсияМетра, АдресСхемыМетра)

Все параметры необязательные.

ПараметрТипПо умолчаниюОписание
ИмяСтрокаНеопределеноИмя инструмента без учёта регистра; "*" — любой инструмент
ТипИнструментаСтрокаНеопределеноВид инструмента: Counter, Histogram, ObservableGauge, ...
ИмяМетраСтрокаНеопределеноИмя метра (инструментирующей библиотеки)
ЕдиницаСтрокаНеопределеноЕдиница измерения инструмента
ВерсияМетраСтрокаНеопределеноВерсия метра
АдресСхемыМетраСтрокаНеопределеноАдрес схемы метра

Методы ​

Совпадает ​

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

ПараметрТипПо умолчаниюОписание
ИмяИнструментаСтрока—Имя инструмента
ТипИнструментаСтрока""Вид инструмента
НовоеИмяМетраСтрока""Имя метра
ЕдиницаИнструментаСтрока""Единица измерения инструмента
НоваяВерсияМетраСтрока""Версия метра
НовыйАдресСхемыМетраСтрока""Адрес схемы метра

Возвращает: Булево — Истина, если совпали все заданные критерии селектора


Имя ​

Возвращает критерий имени инструмента.

Возвращает: Строка, Неопределено — имя или "*"; Неопределено, если критерий не задан


ТипИнструмента ​

Возвращает критерий вида инструмента.

Возвращает: Строка, Неопределено — вид инструмента (Counter, Histogram, ...); Неопределено, если критерий не задан


ИмяМетра ​

Возвращает критерий имени метра.

Возвращает: Строка, Неопределено — Неопределено, если критерий не задан


ВерсияМетра ​

Возвращает критерий версии метра.

Возвращает: Строка, Неопределено — Неопределено, если критерий не задан


Единица ​

Возвращает критерий единицы измерения инструмента.

Возвращает: Строка, Неопределено — Неопределено, если критерий не задан


АдресСхемыМетра ​

Возвращает критерий адреса схемы метра.

Возвращает: Строка, Неопределено — Неопределено, если критерий не задан

Пример ​

bsl
// Отбросить все инструменты библиотеки legacy-lib
СелекторБиблиотеки = Новый ОтелСелекторИнструментов("*", , "legacy-lib");
Отбросить = Новый ОтелПредставление(, , , , ОтелАгрегация.Отбросить());

// Переименовать одну гистограмму: точное имя, вид и единица
СелекторЗадержки = Новый ОтелСелекторИнструментов("http.client.duration", "Histogram", , "ms");
Переименовать = Новый ОтелПредставление("http.client.duration.ms");

Провайдер = Новый ОтелПостроительПровайдераМетрик()
    .ЗарегистрироватьЧитатель(Читатель)
    .ЗарегистрироватьПредставление(СелекторБиблиотеки, Отбросить)
    .ЗарегистрироватьПредставление(СелекторЗадержки, Переименовать)
    .Построить();

// Имя сравнивается без учёта регистра, единица - с учётом
Выбран = СелекторЗадержки.Совпадает("HTTP.Client.Duration", "Histogram", "my-lib", "ms"); // Истина
Выбран = СелекторЗадержки.Совпадает("http.client.duration", "Histogram", "my-lib", "s");  // Ложь

См. также ​