Skip to content

OpenTelemetry SDK для OneScript

Quality GateCoverageBugsCode SmellsLines of CodeOTel SpecTelegramAsk DeepWiki

Библиотека на OneScript для использования OpenTelemetry в оскриптовых проектах. Реализует спецификацию OpenTelemetry v1.55.0.

Позволяет собирать и отправлять телеметрию (трассировку, логи, метрики) в формате OTLP в любой совместимый коллектор — Grafana LGTM, OpenTelemetry Collector и другие.

Возможности

ПодсистемаОписание
АвтоконфигурацияНастройка SDK из переменных окружения или файла конфигурации (через configor)
ТрассировкаСпаны, вложенные спаны, атрибуты, события, линки, статусы, семплирование
ЛогированиеЗаписи логов с уровнями серьёзности и корреляцией с трассировкой
МетрикиСчётчики, реверсивные счётчики, датчики, гистограммы, экспоненциальные гистограммы, наблюдаемые инструменты
ПропагацияW3C Trace Context, W3C Baggage, B3 (отдельный пакет), композитный пропагатор
ЭкспортOTLP/HTTP (JSON и Protobuf), OTLP/gRPC, InMemory (для тестов), TLS
Интеграция с logosАппендер для logos, перенаправляющий логи в OpenTelemetry
Пакетная обработкаBatch-процессоры для спанов и логов с фоновым экспортом

Установка

bash
opm install opentelemetry

Все зависимости (logos, 1connector, collectionos, configor, async) устанавливаются автоматически.

Быстрый старт

Самый простой способ настроить OpenTelemetry — через автоконфигурацию. Достаточно задать переменные окружения и вызвать ОтелАвтоконфигурация.Инициализировать().

bash
export OTEL_SERVICE_NAME=my-service
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
bsl
#Использовать opentelemetry

// Автоконфигурация из переменных окружения
Сдк = ОтелАвтоконфигурация.Инициализировать();

// Получение трассировщика и метра через SDK
Трассировщик = Сдк.ПолучитьТрассировщик("my-library");
Метр = Сдк.ПолучитьМетр("my-library");

// Создание спана
Спан = Трассировщик.НачатьСпан("операция", ОтелВидСпана.Сервер());
Область = Спан.СделатьТекущим();
// ... работа ...
Область.Закрыть();
Спан.Завершить();

// Или через глобальный доступ из любого места кода
Трассировщик = ОтелГлобальный.ПолучитьТрассировщик("другая-библиотека");
json
{
    "otel": {
        "service": { "name": "my-service" },
        "exporter": {
            "otlp": {
                "endpoint": "http://localhost:4318",
                "protocol": "http/protobuf"
            }
        }
    }
}

Требования

ЗависимостьМинимальная версия
OneScript2.0.0+
logos1.7.1+
1connector2.2.1+
collectionos0.8.2+
configor0.11.1+
async0.3.0+
oint1.33.0+ (только для gRPC-транспорта)

Дальнейшее изучение