ОтелНаблюдаемыйРеверсивныйСчетчик
Наблюдаемый реверсивный счётчик (ObservableUpDownCounter) — асинхронный инструмент, допускающий уменьшение значений.
Описание
ОтелНаблюдаемыйРеверсивныйСчетчик реализует спецификацию OpenTelemetry ObservableUpDownCounter. Значения собираются через зарегистрированные callback при каждом сборе метрик. Все методы, включая добавление и удаление callback-ов, безопасны для конкурентного вызова из нескольких потоков. Требования к callback — в ОтелМетр.
Используется, когда нужно асинхронно наблюдать за значением, которое может расти и убывать (например, размер пула соединений, количество элементов в очереди).
Thin facade — вся логика в ОтелБазовыйНаблюдаемыйИнструмент.
Методы
Вид определён в самом классе, остальные методы унаследованы от ОтелБазовыйНаблюдаемыйИнструмент.
Вид
Возвращает вид инструмента.
Возвращает: Строка — "ObservableUpDownCounter"
ДобавитьCallback
Регистрирует дополнительный callback для наблюдения. Повторная регистрация того же callback игнорируется. Callback SHOULD NOT бросать исключения — они будут перехвачены и залогированы.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Callback | Действие | — | Callback с сигнатурой (Наблюдение: ОтелНаблюдениеМетрики) |
Состояние | Произвольный | Неопределено | Состояние регистрации. Если задано, callback вызывается с двумя аргументами: (Наблюдение, Состояние) |
Возвращает: ОтелРегистрацияНаблюдателя — токен регистрации: Закрыть() отменяет её (то же, что УдалитьCallback).
Callback-и, переданные при повторном создании идентичного инструмента (СоздатьНаблюдаемыйРеверсивныйСчетчик с тем же именем, видом и единицей), тоже регистрируются у ранее созданного инструмента.
УдалитьCallback
Удаляет ранее зарегистрированный callback — добавленный ДобавитьCallback или переданный при создании инструмента. Callback ищется по ссылке: нужен тот же объект Действие, что и при регистрации. Если такого callback нет, ничего не делает.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Callback | Действие | — | Callback для удаления |
Имя
Возвращает имя инструмента. Если имя уже было зарегистрировано в метре в другом регистре, возвращается имя первой регистрации. View с НовоеИмя меняет имя метрики в экспорте, а не имя инструмента.
Возвращает: Строка
Описание
Возвращает описание, с которым создан инструмент.
Возвращает: Строка — пустая строка, если описание не задано
ЕдиницаИзмерения
Возвращает единицу измерения, с которой создан инструмент.
Возвращает: Строка — пустая строка, если единица не задана
Внутренние методы
Экспортированы только для вызова из других модулей SDK (в OneScript нет внутренней видимости), приложению вызывать их не нужно:
СобратьДляЧитателя— вызывает callback-и инструмента и собирает его потоки для читателя (вызываетОтелМетр.СобратьДляЧитателя);ЕстьНезавершенныйCallback—Истина, пока выполняется задание callback-а, не уложившееся в таймаут прошлого сбора: метр пропускает сбор инструмента;УстановитьТаймаутCallbackМс— задаёт таймаут callback-ов инструмента (метр передаёт свой таймаут);ЭтоНаблюдаемыйИнструмент— всегдаИстина: по нему метр отличает асинхронные инструменты от синхронных;ДобавитьВнешниеНаблюдения— принимает наблюдения мульти-callback-а для сбора без читателя (ОтелМетр.ВызватьМультиОбратныеВызовы); вне вызова мульти-callback-а игнорирует их с предупреждением;УстановитьВыполняетсяCallback— разрешает и запрещаетДобавитьВнешниеНаблюденияна время вызова мульти-callback-а;ОчиститьТочкиДанных— сбрасывает накопленные наблюдения мульти-callback-ов для сбора без читателя;Хранилища,УстановитьХранилища— возвращают и заменяют хранилища потоков инструмента (поток на читателя и View): метр задаёт их при создании инструмента и после изменения View или читателей;Дескриптор,УстановитьДескриптор— дескриптор инструмента (имя, вид, единица, advisory-параметры), по которому метр разрешает потоки.
Остальные экспортные методы SDK не вызывает, их используют тесты; приложению они не нужны:
Собрать— вызывает callback-и и возвращает кумулятивные данные первого потока вместе с наблюдениями, переданнымиДобавитьВнешниеНаблюдения;УстановитьЛимитМощности— задаёт лимит мощности всех потоков (потокам метра его задают View, читатель или сам метр);ТаймаутCallbackМс— возвращает таймаут callback-ов инструмента в миллисекундах (0 — без таймаута).
Пример
// Наблюдать за размером пула соединений
Процедура СобратьРазмерПула(Наблюдение) Экспорт
Наблюдение.Записать(МойПулСоединений.Количество());
КонецПроцедуры
НаблюдаемыйРеверсивный = Метр.СоздатьНаблюдаемыйРеверсивныйСчетчик(
"db.connections.pool.size",
Новый Действие(ЭтотОбъект, "СобратьРазмерПула"),
"Размер пула соединений",
"{соединений}");