ОтелПредставление
Представление (View) — конфигурация агрегации и фильтрации для инструмента метрик.
Описание
ОтелПредставление позволяет переопределить имя, описание, атрибуты, границы гистограммы и тип агрегации для отдельных инструментов метрик — синхронных и асинхронных.
Регистрируется вместе с селектором инструментов методом ЗарегистрироватьПредставление(Селектор, Представление)ОтелПостроительПровайдераМетрик или ОтелПровайдерМетрик: селектор задаёт, к каким инструментам применяется View.
Правила применения:
- каждый View, выбравший инструмент, даёт отдельный поток метрики у каждого читателя;
- настройки View приоритетнее advisory-параметров инструмента:
ГраницыГистограммыView приоритетнее advisory-границ, а агрегацияexplicit_bucket_histogramиз View advisory-границы не использует; безРазрешенныеКлючиАтрибутовиИсключенныеКлючиАтрибутовпоток сохраняет все атрибуты; - аспекты, которые View не задал, берутся у читателя: агрегация и лимит мощности по умолчанию для вида инструмента;
- View с семантической ошибкой (агрегация, несовместимая с видом инструмента, например гистограмма для асинхронного инструмента, или неизвестная агрегация) игнорируется целиком — как если бы его не было, в лог пишется предупреждение;
- если View даёт двум потокам одного читателя одно имя (например, переименовывает инструмент в имя существующего), оба потока экспортируются, в лог пишется предупреждение о конфликте идентичности метрик;
- View, зарегистрированный после создания инструмента, применяется к измерениям, записанным после регистрации.
Exemplars и отфильтрованные атрибуты. Атрибуты, исключённые представлением (
РазрешенныеКлючиАтрибутов,ИсключенныеКлючиАтрибутов), всё равно могут экспортироваться в exemplars какfilteredAttributes. Чтобы они не уходили в exemplars, выключите exemplars фильтромОтелФильтрЭкземпляров.ВсегдаВыключен()(ОтелФильтрЭкземпляров,OTEL_METRICS_EXEMPLAR_FILTER=always_off) или передайтеНовый ОтелФабрикаNoopРезервуаров()(ОтелФабрикаNoopРезервуаров) в параметрРезервуарЭкземпляров.
Конструктор
Все параметры опциональны.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
НовоеИмя | Строка | Неопределено | Переопределённое имя инструмента |
НовоеОписание | Строка | Неопределено | Переопределённое описание |
РазрешенныеКлючиАтрибутов | Массив | Неопределено | Список разрешённых ключей атрибутов (см. Ключи атрибутов) |
ГраницыГистограммы | Массив | Неопределено | Явные границы бакетов гистограммы |
Агрегация | ОтелАгрегация | Неопределено | Стратегия агрегации |
ИсключенныеКлючиАтрибутов | Массив | Неопределено | Список исключённых ключей атрибутов (см. Ключи атрибутов) |
РезервуарЭкземпляров | Фабрика резервуаров | Неопределено | Фабрика резервуаров exemplars потока — объект с методом СоздатьРезервуар(): резервуар создаётся на каждую серию. Готовые фабрики: ОтелФабрикаПростыхРезервуаров, ОтелФабрикаВыровненныхРезервуаровГистограммы, ОтелФабрикаNoopРезервуаров (отключает exemplars); свой резервуар — см. ОтелРезервуарЭкземпляров. Объект без СоздатьРезервуар() отклоняется с ошибкой в логе, используется резервуар по умолчанию |
ЛимитМощностиАгрегации | Число | Неопределено | Лимит cardinality |
Ключи атрибутов
Ключ в списках РазрешенныеКлючиАтрибутов и ИсключенныеКлючиАтрибутов — точное значение или шаблон: ? — любой один символ, * — любое число любых символов, в том числе ни одного. Ключи сравниваются с учётом регистра, остальные символы шаблона, включая точку, — как есть. Например, http.* оставляет http.method и http.route, но не HTTP.method. Если ключ атрибута совпал с обоими списками, атрибут отбрасывается.
Методы
НовоеИмя
Возвращает: Строка, Неопределено
НовоеОписание
Возвращает: Строка, Неопределено
РазрешенныеКлючиАтрибутов
Возвращает: Массив, Неопределено
ИсключенныеКлючиАтрибутов
Возвращает: Массив, Неопределено
ГраницыГистограммы
Возвращает: Массив, Неопределено
Агрегация
Возвращает: ОтелАгрегация, Неопределено
РезервуарЭкземпляров
Возвращает: фабрика резервуаров или Неопределено
ЛимитМощностиАгрегации
Возвращает: Число, Неопределено
Пример
// Переименовать инструмент и задать границы гистограммы
Границы = Новый Массив();
Границы.Добавить(0.005);
Границы.Добавить(0.01);
Границы.Добавить(0.025);
Границы.Добавить(0.05);
Границы.Добавить(0.1);
Границы.Добавить(0.25);
Границы.Добавить(0.5);
Границы.Добавить(1);
Представление = Новый ОтелПредставление(
"http_request_duration_seconds", // НовоеИмя
Неопределено, // НовоеОписание
Неопределено, // РазрешенныеКлючиАтрибутов
Границы); // ГраницыГистограммы
Селектор = Новый ОтелСелекторИнструментов("http.request.duration");
Построитель = Новый ОтелПостроительПровайдераМетрик();
Построитель.ЗарегистрироватьПредставление(Селектор, Представление);