dragon-code/telemetry

End-to-end telemetry of inter-service communication

Installs: 105

Dependents: 1

Suggesters: 0

Security: 0

Stars: 2

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/dragon-code/telemetry

1.0.1 2025-10-21 20:08 UTC

This package is auto-updated.

Last update: 2025-10-21 23:19:54 UTC


README

the dragon code telemetry

Stable Version Total Downloads License

End-to-end telemetry of inter-service communication.

Installation

You can install the Telemetry package via Composer:

composer require dragon-code/telemetry

Basic Usage

Using Default Header Names

use DragonCode\Telemetry\TelemetryHeader;
use DragonCode\Telemetry\TelemetryRequest;
use Symfony\Component\HttpFoundation\Request;

/** @var Request $request */
$request = /* ... */;

$telemetry = new TelemetryRequest($request, new TelemetryHeader);

function telemetry(Request $request, ?int $userId = null): Request
{
    return (new TelemetryRequest($request, new TelemetryHeader))
        ->userId($userId)
        ->ip()
        ->traceId()
        ->getRequest();
}

// For the first call
telemetry($request, $user->id);

// For subsequent services
telemetry($request);

Custom Headers

use DragonCode\Telemetry\TelemetryHeader;
use DragonCode\Telemetry\TelemetryRequest;
use Symfony\Component\HttpFoundation\Request;

/** @var Request $request */
$request = /* ... */;

$telemetry = new TelemetryRequest($request, new TelemetryHeader);

function telemetry(Request $request, ?int $userId = null): Request
{
    return (new TelemetryRequest($request, new TelemetryHeader))
        ->userId($userId)
        ->ip()
        ->traceId()
        ->custom('Some-Header', fn (Request $request) => 1234
        ->getRequest();
}
$item = telemetry($request);

return $item->headers->get('Some-Header'); // 1234
$request->headers->set('Some-Header', 'qwerty');

$item = telemetry($request);

return $item->headers->get('Some-Header'); // qwerty

Custom Header Names

use DragonCode\Telemetry\TelemetryHeader;

return new TelemetryHeader(
    userId: 'Some-User-Id',
    ip: 'Some-IP',
    traceId: 'Some-Trace-Id',
);

License

This package is licensed under the MIT License.