Quickstart & Agent Installation
Подключение занимает около десяти минут: установите агент для вашего рантайма, передайте DSN-ключ проекта и убедитесь, что агент установил поток с ingestion-узлом. DSN выдаётся в консоли после активации организации: Settings → Projects → Client Keys.
1. Установка агента
| Репозиторий | Адрес |
|---|---|
| APT / RPM (расширение PHP, демон) | packages.tracelight.ru |
| Composer | composer.tracelight.ru |
| npm (scope @tracelight) | npm.tracelight.ru |
| PyPI | pypi.tracelight.ru/simple |
Для PHP агент состоит из двух частей: Zend Extension tracelight.so внутри PHP-FPM и системного демона tracelight-daemon, который держит соединение с ingestion-узлом.
# Токен из консоли: Settings → Organization → Package Registry export TL_TOKEN=tlr_xxxxxxxxxxxxxxxx # Debian / Ubuntu: закрытый APT-репозиторий echo "machine packages.tracelight.ru login org password $TL_TOKEN" \ | sudo tee /etc/apt/auth.conf.d/tracelight.conf curl -fsSL -u org:$TL_TOKEN https://packages.tracelight.ru/gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/tracelight.gpg echo "deb [signed-by=/usr/share/keyrings/tracelight.gpg] https://packages.tracelight.ru/apt stable main" \ | sudo tee /etc/apt/sources.list.d/tracelight.list sudo apt update && sudo apt install tracelight-php tracelight-daemon # Composer: подключение закрытого репозитория composer config repositories.tracelight composer https://composer.tracelight.ru composer config http-basic.composer.tracelight.ru org $TL_TOKEN composer require tracelight/profiler
SDK работает внутри процесса и поддерживает Node.js 22, 24 и 26. Scope @tracelight устанавливается только из внутреннего npm-реестра.
# .npmrc в корне проекта @tracelight:registry=https://npm.tracelight.ru/ //npm.tracelight.ru/:_authToken=${TL_TOKEN} # установка npm install @tracelight/sdk # загрузка source maps в CI npx tracelight sourcemaps upload ./dist --release "$GIT_SHA"
Пакет поддерживает Python 3.11–3.15 и устанавливается из внутреннего индекса PyPI. Интеграции с FastAPI, Django, Celery и SQLAlchemy включаются автоматически.
# pip.conf или переменная окружения export PIP_EXTRA_INDEX_URL=https://org:${TL_TOKEN}@pypi.tracelight.ru/simple pip install "tracelight-apm[profiling]" # Poetry poetry source add --priority=supplemental tracelight https://pypi.tracelight.ru/simple poetry config http-basic.tracelight org $TL_TOKEN poetry add tracelight-apm
2. Инициализация и DSN
DSN содержит публичный ключ проекта, адрес регионального ingestion-узла и ID проекта. Храните его в переменной окружения TRACELIGHT_DSN.
https://pk_7f3a91c2e8@ingest.ru-msk-1.tracelight.ru/4821
; /etc/php/8.5/mods-available/tracelight.ini
extension=tracelight.so
tracelight.dsn="${TRACELIGHT_DSN}"
tracelight.service="checkout-api"
tracelight.environment="production"
tracelight.sample_rate=0.25
tracelight.profiling=1
// instrument.ts — импортируйте до остального кода приложения
import { init } from "@tracelight/sdk";
init({
dsn: process.env.TRACELIGHT_DSN,
service: "storefront-web",
environment: "production",
tracesSampleRate: 0.25,
profiling: { eventLoopLag: true },
});
import os
import tracelight_apm
from fastapi import FastAPI
tracelight_apm.init(
dsn=os.environ["TRACELIGHT_DSN"],
service="pricing-svc",
environment="production",
traces_sample_rate=0.25,
profiling=True,
)
app = FastAPI()
3. Проверка соединения
$ tracelight-agent doctor [ok] DSN parsed project=4821 region=ru-msk-1 [ok] DNS ingest.ru-msk-1.tracelight.ru [ok] TLS 1.3 TLS_AES_256_GCM_SHA384 alpn=h2 [ok] gRPC stream established · keep-alive 30s [ok] Clock skew +3 ms
Ingestion Endpoints & Firewall Rules
Агент держит постоянное keep-alive соединение с ingestion-узлом своего региона. Соединение открывается при старте демона или процесса и переиспользуется для всех событий; при обрыве агент переподключается с экспоненциальной задержкой и досылает данные из локального буфера.
| Узел | Порт | Протокол | Назначение |
|---|---|---|---|
| ingest.ru-msk-1.tracelight.ru | 443/TCP | TLS 1.3 · gRPC / WebSocket | Telemetry Stream, постоянное keep-alive соединение |
| ingest.ru-spb-1.tracelight.ru | 443/TCP | TLS 1.3 · gRPC / WebSocket | Telemetry Stream, постоянное keep-alive соединение |
| ingest.ru-nsk-1.tracelight.ru | 443/TCP | TLS 1.3 · gRPC / WebSocket | Telemetry Stream, постоянное keep-alive соединение |
| live.tracelight.ru | 443/TCP | TLS 1.3 · WSS | Live Tail для консоли |
| api.tracelight.ru | 443/TCP | HTTPS | Envelope API, загрузка source maps |
| 127.0.0.1 | 8135/TCP | локальный | Расширение PHP → tracelight-daemon (только loopback) |
Правила для межсетевого экрана
Envelope API
HTTP-эндпоинт для сред, где долгоживущее соединение невозможно (serverless, cron). Требует заголовок X-Tracelight-Auth с ключом из DSN. Запрос без ключа:
$ curl -i https://api.tracelight.ru/api/v1/envelope HTTP/2 401 content-type: application/json www-authenticate: Bearer realm="tracelight", error="invalid_token" {"error":"unauthorized","message":"Missing or invalid DSN public key","code":401}