Skip to content

Конфигурация ​

Обязательные параметры ​

Два параметра обязательны для запуска SDK:

ПараметрОписание
otel.enabledВключает инструментирование аннотациями и экспорт логов. При false напильники возвращают желуди без изменений, аппендер ОтелАппендерLogos ничего не пишет, SDK не инициализируется и экспортёры не запускаются.
otel.service.nameИмя сервиса в телеметрии.
json
{
  "otel": {
    "enabled": true,
    "service": {
      "name": "my-service"
    }
  }
}
sh
OTEL_ENABLED=true
OTEL_SERVICE_NAME=my-service

Экспорт телеметрии ​

По умолчанию SDK экспортирует трассы, метрики и логи по адресу http://localhost:4318 (протокол http/protobuf).

json
{
  "otel": {
    "enabled": true,
    "service": {
      "name": "my-service"
    },
    "exporter": {
      "otlp": {
        "endpoint": "http://localhost:4318",
        "protocol": "http/protobuf"
      }
    },
    "traces":  { "exporter": "otlp" },
    "metrics": { "exporter": "otlp" },
    "logs":    { "exporter": "otlp" }
  }
}

Чтобы отключить SDK полностью:

json
{
  "otel": {
    "sdk": {
      "disabled": true
    }
  }
}

Полный список параметров OpenTelemetry — в документации opentelemetry SDK.

Ресурс ​

Ресурс — атрибуты, которые SDK прикладывает ко всей телеметрии сервиса. ОтелSdk собирает его в таком порядке, каждый следующий источник важнее предыдущего:

  1. Атрибуты по умолчанию и встроенные детекторы ядра opentelemetry.
  2. Детекторы ресурса приложения — желуди с прозвищем ДетекторРесурса, в порядке &Порядок по возрастанию. При совпадении ключей важнее детектор с большим &Порядок.
  3. Переменные окружения OTEL_RESOURCE_ATTRIBUTES и OTEL_SERVICE_NAME, затем параметры otel.resource.attributes и otel.service.name.

autumn-opentelemetry сам содержит такой детектор — желудь ОтелДетекторРесурсаДистрибутива. Он добавляет атрибуты telemetry.distro.name = autumn-opentelemetry и telemetry.distro.version с версией пакета.

Свой детектор — желудь с прозвищем ДетекторРесурса:

bsl
#Использовать opentelemetry

Функция Обнаружить() Экспорт
    Атрибуты = Новый Соответствие();
    Атрибуты.Вставить("deployment.environment.name", "production");
    Возврат Новый ОтелРесурс(Атрибуты);
КонецФункции

&Желудь
&Прозвище("ДетекторРесурса")
&Спецификация("Инициализация")
&Реализует("ИнтерфейсДетекторРесурса")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
  • &Спецификация("Инициализация") обязательна: SDK создаётся на этапе инициализации приложения, и желудь без неё на этом этапе не создаётся.
  • &Реализует("ИнтерфейсДетекторРесурса") обязательна: без неё ядро не примет детектор и выбросит исключение.
  • Детектор, который завершился с ошибкой, ядро пропускает и пишет ошибку в лог.

При файловой конфигурации SDK (otel.config.file) ресурс задаётся в файле, и детекторы не применяются.

Инструментирование entity ​

Параметры otel.entity.enabled, otel.entity.query-text и otel.entity.repository.enabled управляют трассировкой и метриками работы с базой данных через autumn-data. Признаки включения по умолчанию наследуют otel.enabled, текст запроса по умолчанию не пишется. Подробнее - в разделе Инструментирование entity.

Конфигурация логирования ​

ОтелДуб автоматически создаёт желудь ОтелАппендерLogos и регистрирует его в logos. При otel.enabled = false аппендер создаётся без OTel-логгера и отбрасывает события, поэтому конфигурацию logos с ним можно не менять при выключении телеметрии. Для настройки уровня экспортируемых логов используйте autumn-properties.json:

json
{
  "logos": {
    "logger": {
      "rootLogger": {
        "level": "INFO",
        "appenders": ["otel", "console"]
      }
    },
    "appender": {
      "otel": {
        "type": "ОтелАппендерLogos",
        "level": "WARN"
      },
      "console": {
        "type": "ВыводЛогаВКонсоль",
        "level": "INFO"
      }
    }
  }
}