ОтелНаблюдаемыйДатчик
Наблюдаемый датчик (ObservableGauge) — асинхронный инструмент для мгновенных значений.
Описание
ОтелНаблюдаемыйДатчик реализует спецификацию OpenTelemetry ObservableGauge. Значения собираются через зарегистрированные callback при каждом сборе метрик. Все методы, включая добавление и удаление callback-ов, безопасны для конкурентного вызова из нескольких потоков. Требования к callback — в ОтелМетр.
Используется, когда нельзя записать значение синхронно в момент изменения (например, показания температуры, загрузка памяти).
Thin facade — вся логика в ОтелБазовыйНаблюдаемыйИнструмент.
Методы
Вид определён в самом классе, остальные методы унаследованы от ОтелБазовыйНаблюдаемыйИнструмент.
Вид
Возвращает вид инструмента.
Возвращает: Строка — "ObservableGauge"
Добавить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 — без таймаута).
Пример
// Наблюдать за текущей температурой
Процедура СобратьТемпературу(Наблюдение) Экспорт
ЧипыЦПУ = ПолучитьСписокЧипов();
Для Каждого Чип Из ЧипыЦПУ Цикл
Атрибуты = Новый ОтелАтрибуты();
Атрибуты.Установить("cpu", Чип.Номер);
Наблюдение.Записать(Чип.Температура, Атрибуты);
КонецЦикла;
КонецПроцедуры
НаблюдаемыйДатчик = Метр.СоздатьНаблюдаемыйДатчик(
"system.cpu.temperature",
Новый Действие(ЭтотОбъект, "СобратьТемпературу"),
"Температура ЦП",
"Cel");