ОтелАгрегация
Модуль стратегий агрегации метрик.
Описание
ОтелАгрегация — глобальный модуль-фабрика конфигураций агрегации для инструментов метрик. Используется в ОтелПредставление и при настройке читателей.
Функции
ПоУмолчанию
Возвращает конфигурацию агрегации по умолчанию (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).
Пример
// Явные границы бакетов для гистограммы запросов
Границы = Новый Массив();
Границы.Добавить(0.005);
Границы.Добавить(0.01);
Границы.Добавить(0.025);
Границы.Добавить(0.05);
Границы.Добавить(0.1);
Границы.Добавить(0.25);
Границы.Добавить(0.5);
Границы.Добавить(1);
Агрегация = ОтелАгрегация.ГистограммаСЯвнымиГраницами(Границы);
Представление = Новый ОтелПредставление(
Неопределено, // НовоеИмя
Неопределено, // НовоеОписание
Неопределено, // РазрешенныеКлючиАтрибутов
Неопределено, // ГраницыГистограммы
Агрегация); // Агрегация