ОтелРеверсивныйСчетчик
Реверсивный счётчик (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).
Пример
АктивныеСоединения = Метр.СоздатьРеверсивныйСчетчик(
"db.connections.active", "Активные соединения с БД");
// Новое соединение
АктивныеСоединения.Добавить(1);
// Соединение закрыто
АктивныеСоединения.Добавить(-1);