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
Requires
- php: ^8.2
- ramsey/uuid: ^4.9
- symfony/http-foundation: ^7.3
Requires (Dev)
- dragon-code/codestyler: ^6.3
- pestphp/pest: ^3.0 || ^4.0
- pestphp/pest-plugin-type-coverage: ^3.0 || ^4.0
- symfony/var-dumper: ^7.3
This package is auto-updated.
Last update: 2025-10-21 23:19:54 UTC
README
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.