OpenTelemetry SDK для OneScript
Библиотека на 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/protobufbsl
#Использовать opentelemetry
// Автоконфигурация из переменных окружения
Сдк = ОтелАвтоконфигурация.Инициализировать();
// Получение трассировщика и метра через SDK
Трассировщик = Сдк.ПолучитьТрассировщик("my-library");
Метр = Сдк.ПолучитьМетр("my-library");
// Создание спана
Спан = Трассировщик.НачатьСпан("операция", ОтелВидСпана.Сервер());
Область = Спан.СделатьТекущим();
// ... работа ...
Область.Закрыть();
Спан.Завершить();
// Или через глобальный доступ из любого места кода
Трассировщик = ОтелГлобальный.ПолучитьТрассировщик("другая-библиотека");json
{
"otel": {
"service": { "name": "my-service" },
"exporter": {
"otlp": {
"endpoint": "http://localhost:4318",
"protocol": "http/protobuf"
}
}
}
}Требования
| Зависимость | Минимальная версия |
|---|---|
| OneScript | 2.0.0+ |
| logos | 1.7.1+ |
| 1connector | 2.2.1+ |
| collectionos | 0.8.2+ |
| configor | 0.11.1+ |
| async | 0.3.0+ |
| oint | 1.33.0+ (только для gRPC-транспорта) |
Дальнейшее изучение
- Автоконфигурация — настройка через переменные окружения и файл конфигурации
- Трассировка — спаны, атрибуты, события, семплирование
- Логирование — записи логов, интеграция с logos
- Метрики — инструменты измерения, периодический экспорт
- Пропагация — W3C Trace Context, Baggage, B3
- Экспорт — транспорты HTTP, gRPC, InMemory, TLS
