hub.oscript.io
hub.oscript.io

opentelemetry-v8-logsпакет

Экспорт технологического журнала и журнала регистрации 1С:Предприятия в OpenTelemetry (OTLP)

автор: Nikita Fedkinскачиваний: 2репозиторий: github.com/nixel2007/opentelemetry-v8-logs

Пакет лежит в основном пуле хаба, а opm знает этот хаб по умолчанию: короткой формы достаточно.

opm install opentelemetry-v8-logs

Скачанный файл ставится командой opm install -f <файл> — сеть для этого уже не нужна.

Описание

opentelemetry-v8-logs

Тестирование Telegram

Экспорт технологического журнала (ТЖ), журнала регистрации (ЖР) и метрик кластера 1С:Предприятия в OpenTelemetry по OTLP: логи в Loki, метрики в Prometheus/Mimir, трассы вызовов в Tempo - весь стек LGTM.

Приложение на OneScript и Autumn, телеметрия отправляется через OpenTelemetry SDK для OneScript.

Возможности

  • Технологический журнал в текстовом формате и в формате JSON (8.3.25+), размещение файлов по каталогам процессов и плоское, многострочные значения, формат 8.2.
  • Журнал регистрации в формате lgf/lgp, включая разделение данных сеанса.
  • Дочитывание файлов с сохраненной байтовой позиции: незавершенные события и записи дочитываются при следующем проходе, позиции хранятся в базе через autumn-data (SQLite, JSON и другие коннекторы entity).
  • Доставка «хотя бы один раз»: позиции фиксируются только после успешной отправки телеметрии. Логи и спаны при повторе могут продублироваться; метрики - только после успешного сброса.
  • Трассы вызовов: CALL со вложенными событиями (DBMSSQL, SDBL, TLOCK, EXCP...) в одну трассу, потоковая отправка спанов без накопления событий, каждая запись лога связана со своим спаном.
  • Метрики кластера: сеансы, соединения, рабочие процессы и лицензии через сервер администрирования (ras) по его протоколу, без rac и платформы на машине коллектора; по базе и PID процесса связываются с трассами технологического журнала.

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

opm install opentelemetry-v8-logs

# стек LGTM для проверки
docker compose -f demo/docker-compose.yml up -d

# настройки - в autumn-properties.json текущего каталога, пример в demo/
cp demo/autumn-properties.json .   # укажите свои каталоги журналов
opentelemetry-v8-logs

Grafana будет доступна на http://localhost:3000: дашборды «1С: журналы» и «1С: кластер», логи в Explore → Loki ({service_name="1c-cluster"} - технологический журнал, {service_name="erp"} - журнал регистрации, {service_name="opentelemetry-v8-logs"} - логи самого коллектора), трассы в Explore → Tempo, метрики v8_techlog_event_duration_*, db_client_operation_duration_* и v8_eventlog_records_total в Prometheus. Метрики кластера v8_cluster_* включаются адресом сервера администрирования ras (localhost:1545) в массиве otel.v8-logs.cluster в autumn-properties.json, по элементу на ras. Вместе с ними в Loki идут снимки сеансов - запись на сеанс за опрос в области opentelemetry-v8-logs.cluster (память, вызовы, время в СУБД, пользователь, приложение), а метрики v8_cluster_sessions_* дают агрегаты по базе и приложению.

Подробнее - в документации: настройка, состав телеметрии.

Разработка

opm install -l --dev
oneunit e

Тесты пишутся до кода. Классы разбора и чтения компилируются в режиме #native.

Код - желуди autumn в каталогах подсистем src/<подсистема>/Классы (Чтение, ТехнологическийЖурнал, ЖурналРегистрации, Кластер, Экспорт, Конвейер, Коллектор, Запуск), которые подключаются по соглашению о структуре каталогов: класс подключает каталоги подсистем, от которых зависит, точка входа src/main.os - Запуск (команды autumn-cli). Классы без состояния источника (чтение файлов, парсеры, время) - синглтоны, классы с параметрами источника журнала (читатели, экспортеры, сборщик трасс, позиции) - компанейские желуди: параметры передаются блестяшками, а желуди достаются из &Табакерка. Тестовые наборы oneunit - тоже желуди и получают классы так же.

Лицензия

MIT License. Подробности в файле LICENSE.md.