Skip to content

Замеряемый ​

Аннотация для автоматического замера длительности выполнения методов (аналог @Timed из Spring Boot).

Синтаксис ​

bsl
&Замеряемый[(Значение)]
Функция ИмяМетода(...) Экспорт
    ...
КонецФункции

Параметры ​

Значение ​

Тип: Строка (опционально)

Имя метрики. Должно соответствовать формату OTel (ASCII, точки как разделители). Если не указано, используется "ИмяЖелудя.ИмяМетода.duration" с автоматической транслитерацией кириллицы.

Описание ​

Аннотация &Замеряемый оборачивает метод в декоратор, который:

  1. Фиксирует время начала вызова
  2. После завершения метода записывает длительность (в секундах, единица s) в гистограмму OTel
  3. При исключении записывает длительность с атрибутом error.type

Атрибуты гистограммы: code.function.name (полное имя метода ИмяЖелудя.ИмяМетода), error.type (при ошибке).

error.type — значение ОтелУтилиты.ТипОшибки: код ошибки библиотеки errors, код нативной ошибки OneScript или _OTHER. У успешных вызовов атрибута нет.

При размещении на конструкторе (вместе с &Желудь) инструментируются все экспортные методы желудя, в том числе те, которых нет в его модуле: напильник рефлексирует по самому экземпляру, а не по типу. К моменту обработки желудь обычно уже обёрнут декоратором — хранилищем сущностей autumn-data, построителем наследника из extends, декоратором предыдущего напильника, — и методов у экземпляра больше, чем объявлено в модуле типа.

Аннотации на методах читаются оттуда же, поэтому &Замеряемый на методе, пришедшем с декоратором, задаёт имя метрики так же, как на методе самого желудя. Такой метод замеряется и тогда, когда на конструкторе аннотации нет вовсе.

Примеры ​

Инструментация одного метода ​

bsl
&Замеряемый("payments.process.duration")
Функция ОбработатьПлатёж(Данные) Экспорт
    Возврат ПровестиПлатёж(Данные);
КонецФункции

Инструментация всех методов класса ​

bsl
&Желудь
&Замеряемый
Процедура ПриСозданииОбъекта()
КонецПроцедуры

Комбинирование с другими аннотациями ​

bsl
&Наблюдаемый("orders.process")
&Замеряемый("orders.duration")
Функция ОбработатьЗаказ(ИдЗаказа) Экспорт
    Возврат СформироватьОтвет(ИдЗаказа);
КонецФункции

См. также ​