Перейти к содержанию

Сквозная корреляция сигналов

Ненормативный пример. Иллюстрирует OBS-LOG-004, OBS-TRACE-003, OBS-TRACE-004, OBS-MET-002, OBS-ERR-004, OBS-ERR-005, OBS-ERR-006 и OBS-AUD-003. Запрещено копировать структуры как готовый контракт проекта.

Ограничения применимости: показана одна синтетическая backend-операция внутри активной трассы. Пример не определяет SDK API, transport, полный набор полей, классификацию данных, sampling, retention или production-конфигурацию.

Операция имеет один trace_id и один correlation_id. Конкретный span_id указывает на тот span, внутри которого создан сигнал.

Трасса

{
  "trace_id": "0123456789abcdef0123456789abcdef",
  "span_id": "0123456789abcdef",
  "service.name": "orders-api",
  "service.version": "abc123",
  "deployment.environment.name": "test",
  "span.name": "approve order"
}

Диагностический лог

{
  "timestamp": "2026-07-24T12:34:56.123Z",
  "severity_text": "INFO",
  "severity_number": 9,
  "message": "Order approval started",
  "service.name": "orders-api",
  "service.version": "abc123",
  "deployment.environment.name": "test",
  "event.name": "order.approval.started",
  "trace_id": "0123456789abcdef0123456789abcdef",
  "span_id": "0123456789abcdef",
  "correlation_id": "corr-example-1"
}

Метрика

{
  "metric.name": "orders.approval.duration",
  "service.name": "orders-api",
  "service.version": "abc123",
  "deployment.environment.name": "test",
  "result": "failure",
  "exemplar.trace_id": "0123456789abcdef0123456789abcdef"
}

correlation_id и span_id не становятся атрибутами временного ряда: высококардинальная связь с конкретной операцией хранится только в exemplar.

Событие ошибки

{
  "event.name": "order.approval.failed",
  "error.type": "payment_unavailable",
  "message": "Payment provider is unavailable",
  "service.name": "orders-api",
  "service.version": "abc123",
  "deployment.environment.name": "test",
  "trace_id": "0123456789abcdef0123456789abcdef",
  "span_id": "0123456789abcdef",
  "correlation_id": "corr-example-1"
}

Аудит-событие

{
  "timestamp": "2026-07-24T12:34:56.123Z",
  "telemetry.type": "audit",
  "event.id": "audit-example-1",
  "event.name": "order.approval",
  "event.schema_version": 1,
  "service.name": "orders-api",
  "service.version": "abc123",
  "deployment.environment.name": "test",
  "actor.type": "service",
  "actor.id": "checkout-api",
  "action": "approve",
  "object.type": "order",
  "object.id": "ord-example",
  "result": "failure",
  "failure.reason": "payment_unavailable",
  "trace_id": "0123456789abcdef0123456789abcdef",
  "span_id": "0123456789abcdef",
  "correlation_id": "corr-example-1"
}

Лог проверяется schemas/log-record.schema.json, аудит-событие — schemas/audit-event.schema.json. Остальные фрагменты сопоставляются с указанными нормативными требованиями: общей JSON Schema для всех сигналов этот пример не вводит.