Skip to content

ОтелАгрегация ​

Модуль стратегий агрегации метрик.

Описание ​

ОтелАгрегация — глобальный модуль-фабрика конфигураций агрегации для инструментов метрик. Используется в ОтелПредставление и при настройке читателей.

Функции ​

ПоУмолчанию ​

Возвращает конфигурацию агрегации по умолчанию (Default): агрегацию выбирает SDK по виду инструмента — сумма для счётчиков и реверсивных счётчиков, последнее значение для датчиков, явная гистограмма для гистограмм. Читатель может задать для вида инструмента свою агрегацию по умолчанию, например экспоненциальную гистограмму для гистограмм (OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION).

Возвращает: Строка — "default"


Сумма ​

Возвращает конфигурацию суммирующей агрегации (Sum).

Возвращает: Строка — "sum"


ПоследнееЗначение ​

Возвращает конфигурацию агрегации «последнее значение» (LastValue).

Возвращает: Строка — "last_value"


Отбросить ​

Возвращает конфигурацию агрегации «отбросить» (Drop) — данные не собираются.

Возвращает: Строка — "drop"


ГистограммаСЯвнымиГраницами ​

Возвращает конфигурацию агрегации гистограммы с явно заданными границами бакетов (ExplicitBucketHistogram).

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

ПараметрТипПо умолчаниюОписание
ГраницыМассив из ЧислоНеопределеноГраницы бакетов по возрастанию. Неопределено — границы по умолчанию: 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000
ЗаписыватьМинМаксБулевоИстинаЗаписывать минимальное и максимальное значение (RecordMinMax). Ложь — в точке гистограммы нет min и max

Если ЗаписыватьМинМакс — не Булево, представление (View) с такой агрегацией не применяется, в лог пишется предупреждение.

Возвращает: Соответствие — Тип = "explicit_bucket_histogram", Границы, если они переданы, и ЗаписыватьМинМакс


ГистограммаЭкспоненциальная ​

Возвращает конфигурацию агрегации экспоненциальной гистограммы (Base2ExponentialBucketHistogram). Гистограмма начинает с максимальной шкалы; если бакетов не хватает, SDK понижает шкалу.

ПараметрТипПо умолчаниюОписание
МаксБакетовЧисло160Максимальное число бакетов положительных значений и отдельно — отрицательных (MaxSize); значение меньше 2 считается равным 2. Если значение не больше 0, представление (View) с такой агрегацией не применяется, в лог пишется предупреждение
МаксШкалаЧисло20Максимальная шкала (MaxScale) — целое число от -10 до 20
ЗаписыватьМинМаксБулевоИстинаЗаписывать минимальное и максимальное значение (RecordMinMax). Ложь — в точке гистограммы нет min и max

Если МаксШкала вне диапазона от -10 до 20 или дробная, а ЗаписыватьМинМакс — не Булево, представление (View) с такой агрегацией не применяется, в лог пишется предупреждение.

Возвращает: Соответствие — Тип = "exponential_histogram", МаксБакетов, МаксШкала и ЗаписыватьМинМакс

Внутренние функции ​

Экспортированы только для вызова из других модулей SDK (в OneScript нет внутренней видимости), приложению вызывать их не нужно:

  • Нормализовать — приводит конфигурацию агрегации (строку, Соответствие функций модуля, структуру или Неопределено — агрегацию по умолчанию) к структуре с полями Тип, Границы, МаксБакетов, МаксШкала, ЗаписыватьМинМакс; для неизвестной или некорректной конфигурации возвращает Неопределено;
  • РазрешитьПоУмолчанию — заменяет агрегацию по умолчанию агрегацией вида инструмента: последнее значение для Gauge и ObservableGauge, явная гистограмма для Histogram, сумма — для остальных видов;
  • СовместимаСВидом — проверяет, что агрегацию можно применить к виду инструмента: гистограммы несовместимы с асинхронными инструментами;
  • СоздатьАгрегаторПотока — создаёт агрегатор потока по агрегации и виду инструмента; у инструментов, записывающих отрицательные значения, сумма гистограммы не собирается;
  • ФабрикаРезервуаровПоУмолчанию — возвращает фабрику резервуаров exemplars по умолчанию для агрегации (см. Резервуар по умолчанию), для drop — Неопределено;
  • ЗаписываетОтрицательные — Истина для видов UpDownCounter, Gauge, ObservableUpDownCounter и ObservableGauge (другие модули SDK её не вызывают, её использует СоздатьАгрегаторПотока);
  • ЭтоАсинхронныйВид — Истина для видов ObservableCounter, ObservableUpDownCounter и ObservableGauge;
  • ЭтоАгрегаторОтбрасывания — проверяет, что агрегатор отбрасывает измерения (агрегация drop).

Пример ​

bsl
// Явные границы бакетов для гистограммы запросов
Границы = Новый Массив();
Границы.Добавить(0.005);
Границы.Добавить(0.01);
Границы.Добавить(0.025);
Границы.Добавить(0.05);
Границы.Добавить(0.1);
Границы.Добавить(0.25);
Границы.Добавить(0.5);
Границы.Добавить(1);

Агрегация = ОтелАгрегация.ГистограммаСЯвнымиГраницами(Границы);

Представление = Новый ОтелПредставление(
    Неопределено,    // НовоеИмя
    Неопределено,    // НовоеОписание
    Неопределено,    // РазрешенныеКлючиАтрибутов
    Неопределено,    // ГраницыГистограммы
    Агрегация);      // Агрегация