Skip to content

ОтелРеверсивныйСчетчик ​

Реверсивный счётчик (UpDownCounter) — инструмент для суммирования значений, допускающий уменьшение.

Описание ​

ОтелРеверсивныйСчетчик реализует спецификацию OpenTelemetry UpDownCounter. Принимает любые значения, включая отрицательные. Используется для измерений, которые могут как расти, так и уменьшаться (количество активных соединений, размер очереди и т.д.). Все методы безопасны для конкурентного вызова из нескольких потоков.

Thin facade — логика хранения в ОтелБазовыйСинхронныйИнструмент.

Методы ​

Добавить и Вид определены в самом классе, остальные методы унаследованы от ОтелБазовыйСинхронныйИнструмент.

Добавить ​

Добавляет значение к счётчику. Принимает и отрицательные значения.

ПараметрТипПо умолчаниюОписание
ЗначениеЧисло—Значение для добавления (может быть отрицательным)
АтрибутыОтелАтрибутыНеопределеноАтрибуты точки данных
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст

Включен ​

Проверяет, включён ли инструмент — записывает ли он измерения (спецификация Metrics API, раздел Enabled). У выключенного инструмента Добавить ничего не записывает, поэтому по результату можно не вычислять атрибуты и значение измерения.

Возвращает Ложь, если:

  • инструмент отключён закрытием провайдера: Закрыть() провайдера отключает инструменты его метров, в том числе созданные после закрытия;
  • инструмент создан no-op метром: его выдаёт закрытый провайдер и no-op провайдер, пока SDK не настроен;
  • все потоки инструмента используют агрегацию Drop (ОтелАгрегация.Отбросить()): её задаёт View или агрегация читателя по умолчанию для вида инструмента.

Иначе возвращает Истина.

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

ПараметрТипПо умолчаниюОписание
АтрибутыОтелАтрибуты, НеопределеноНеопределеноЗарезервирован для будущих версий, на результат не влияет

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


Вид ​

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

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


Имя ​

Возвращает имя инструмента. Если имя уже было зарегистрировано в метре в другом регистре, возвращается имя первой регистрации. View с НовоеИмя меняет имя метрики в экспорте, а не имя инструмента.

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


Описание ​

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

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


ЕдиницаИзмерения ​

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

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

Внутренние методы ​

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

  • Записать — записывает значение во все потоки инструмента; его вызывает Добавить;
  • СобратьДляЧитателя — собирает потоки инструмента для читателя (вызывает ОтелМетр.СобратьДляЧитателя);
  • Отключить — отключает инструмент: измерения больше не записываются, Включен возвращает Ложь (метр вызывает его при закрытии провайдера);
  • Хранилища, УстановитьХранилища — возвращают и заменяют хранилища потоков инструмента (поток на читателя и View): метр задаёт их при создании инструмента и после изменения View или читателей;
  • Дескриптор, УстановитьДескриптор — дескриптор инструмента (имя, вид, единица, advisory-параметры), по которому метр разрешает потоки;
  • УстановитьМетрВключен — передаёт инструменту общий с метром флаг включённости (метр — при создании инструмента).

Остальные экспортные методы SDK не вызывает, их используют тесты; приложению они не нужны:

  • Собрать — возвращает данные первого потока инструмента, не начиная новый интервал сбора;
  • ОчиститьТочкиДанных — завершает интервал сбора всех потоков: при дельта-временности начинает новый интервал, при кумулятивной сбрасывает exemplars;
  • КоличествоСерий — возвращает количество серий атрибутов первого потока;
  • УстановитьЛимитМощности — задаёт лимит мощности всех потоков (потокам метра его задают View, читатель или сам метр);
  • УстановитьФильтрЭкземпляров — задаёт фильтр exemplars всех потоков (потокам метра его задаёт провайдер);
  • УстановитьФабрикуРезервуаров — задаёт фабрику резервуаров exemplars всех потоков;
  • УстановитьРезервуарЭкземпляров — устаревший вариант: один резервуар exemplars на все серии потока, пишет предупреждение в лог;
  • УстановитьРазрешенныеКлючиАтрибутов, УстановитьИсключенныеКлючиАтрибутов — задают фильтр ключей атрибутов всех потоков (потокам метра его задаёт View).

Пример ​

bsl
АктивныеСоединения = Метр.СоздатьРеверсивныйСчетчик(
    "db.connections.active", "Активные соединения с БД");

// Новое соединение
АктивныеСоединения.Добавить(1);

// Соединение закрыто
АктивныеСоединения.Добавить(-1);