Skip to content

ОтелНаблюдательИсточникаДанных

Наблюдатель источника данных entity, переводящий его события в спаны и метрики OpenTelemetry. Реализует интерфейс НаблюдательИсточникаДанных библиотеки entity.

Описание

Регистрируется на источнике данных методом ДобавитьНаблюдателя и получает события всех менеджеров, созданных из этого источника. Каждое событие entity приходит наблюдателю дважды: в ПередСобытием он начинает спан и делает его текущим, в ПослеСобытия - дописывает результат и ошибку, закрывает область, завершает спан и пишет метрики. Спан хранится в состоянии события, поэтому наблюдатель не держит общего состояния и безопасен для одновременных вызовов из разных потоков исполнения.

Вид события entityСпанМетрики
ОперацияINTERNAL {Операция} {ТипСущности}entity.operation.duration, entity.entities
ЗапросCLIENT {Операция} {Таблица}db.client.operation.duration
Соединение-db.client.connection.count, .max, .pending_requests, .wait_time, .create_time, .timeouts
Транзакция-entity.transactions

Конструктор

ПриСозданииОбъекта

bsl
&Реализует("НаблюдательИсточникаДанных")
Процедура ПриСозданииОбъекта(Знач ПТрассировщик, Знач ПМетр = Неопределено, Знач Настройки = Неопределено)

Параметры:

  • ПТрассировщик - ОтелТрассировщик, Неопределено - трассировщик, которым создаются спаны. Неопределено выключает трассировку.
  • ПМетр - ОтелМетр, Неопределено - метр, в котором регистрируются инструменты. Неопределено выключает метрики.
  • Настройки - Структура, Неопределено - настройки наблюдателя:
    • ТекстЗапроса - Булево - писать текст запроса в атрибут db.query.text. По умолчанию Истина.
    • Метрики - Булево - регистрировать инструменты и писать метрики. По умолчанию Истина.

Инструменты метрик регистрируются в конструкторе, поэтому один метр на несколько наблюдателей (несколько источников данных) дает одни и те же инструменты: SDK возвращает уже зарегистрированный инструмент по имени.

Методы

ПередСобытием

bsl
Процедура ПередСобытием(Событие) Экспорт

Начинает спан операции или запроса с описательными атрибутами и делает его текущим. События соединений и транзакций спанов не порождают.

Параметры:

  • Событие - СобытиеИсточникаДанных - начатое событие.

ПослеСобытия

bsl
Процедура ПослеСобытия(Событие) Экспорт

Дописывает в спан число строк и ошибку (событие exception, статус Error, атрибут error.type), закрывает область спана, завершает его и пишет метрики события.

Параметры:

  • Событие - СобытиеИсточникаДанных - завершенное событие.

Пример

bsl
Сдк = ОтелАвтоконфигурация.Инициализировать();

Наблюдатель = Новый ОтелНаблюдательИсточникаДанных(
    Сдк.ПолучитьТрассировщик("entity"),
    Сдк.ПолучитьМетр("entity"),
    Новый Структура("ТекстЗапроса", Ложь)
);
Источник.ДобавитьНаблюдателя(Наблюдатель);
МенеджерСущностей = Новый МенеджерСущностей(Источник);