Skip to content

Коллектор OpenTelemetry

Захватывает спаны и трейсы OpenTelemetry — данные распределённой трассировки с подсчётом ошибок и метаданными спанов.

Панель коллектора OpenTelemetry

Собираемые данные

ПолеОписание
spansМассив собранных спанов
traceCountКоличество различных трейсов
spanCountОбщее количество спанов
errorCountКоличество спанов с ошибками

Схема данных

json
{
    "spans": [
        {
            "traceId": "abc123...",
            "spanId": "def456...",
            "parentSpanId": null,
            "name": "HTTP GET /users",
            "kind": "SERVER",
            "startTime": 1711878000100,
            "endTime": 1711878000350,
            "status": "OK",
            "attributes": {"http.method": "GET", "http.url": "/users"},
            "events": []
        }
    ],
    "traceCount": 1,
    "spanCount": 5,
    "errorCount": 0
}

Сводка (отображается в списке отладочных записей):

json
{
    "opentelemetry": {
        "spans": 5,
        "traces": 1,
        "errors": 0
    }
}

Контракт

php
use AppDevPanel\Kernel\Collector\OpenTelemetryCollector;
use AppDevPanel\Kernel\Collector\SpanRecord;

$collector->collect(new SpanRecord(
    traceId: 'abc123...',
    spanId: 'def456...',
    name: 'HTTP GET /users',
    kind: 'SERVER',
    startTime: 1711878000100,
    endTime: 1711878000350,
    status: 'OK',
    attributes: ['http.method' => 'GET'],
));

// Or batch collection
$collector->collectBatch([$span1, $span2, $span3]);

Как это работает

Коллектор получает спаны от адаптера OpenTelemetry SpanExporter. Когда ваше приложение использует OpenTelemetry SDK для трассировки, спаны экспортируются в этот коллектор вместо (или в дополнение к) внешних бэкендов, таких как Jaeger или Zipkin.

Панель отладки

  • Представление трейсов — спаны сгруппированы по ID трейса
  • Временная шкала спанов — визуальная временная шкала длительности спанов
  • Подсветка ошибок — спаны с ошибками отмечены красным
  • Инспекция атрибутов — раскрываемые атрибуты и события спанов

Выпущено под лицензией MIT.