Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Open Telemetry Laravel Package

spatie/laravel-open-telemetry

Add OpenTelemetry tracing to Laravel to measure performance and follow requests across dispatched jobs and services. Export traces to tools like Jaeger or Aspecto for end-to-end visibility and debugging. (Package still in development.)

View on GitHub
Deep Wiki
Context7

title: Introduction weight: 1

Measuring performance and tracking bugs is typically done inside a single web request or job. But what if you want to see the performance or flow of a web request together with all the jobs or additional requests it dispatches?

Open Telemetry, or OTel for short, is a collection of tools, APIs and SDKs to collect information on how an entire system is behaving. A "system" can be a single application, a group of applications that are working together (e.g. microservices) and even queued jobs across workers.

Using the laravel-open-telemetry package you can easily measure performance of a Laravel powered system. It can transmit the results to a tracing tool like Jaeger or Aspecto.

In your Laravel application, you can start and stop measurements using the Measure facade. You can nest measurements however deep you like and across multiple requests or jobs.

use Spatie\OpenTelemetry\Facades\Measure;

Measure::start('parent');
sleep(1);
Measure::start('child');

sleep(2);

Measure::stop('child');
sleep(3);
Measure::stop('parent');

Here's what that will look like in Jaeger:

screenshot

The real value of this package comes when also using it to measure an entire process the includes the web requests, one or more jobs / services.

Measure::start('my-web-request');

Measure::stop('my-web-request');

dispatch(new MyJob()); // let's imagine that this jobs has a `sleep(1)` in its `handle` method.

The package will automatically measure any jobs. Any measurements in the job will be associated with the web request that dispatch it.

This is what it would look like in Jaeger:

screenshot

Jaeger and similar tools can calculate averages and display very interesting statistics around the measurements made. This will greatly help you understand how your application performs as a whole.

This package isn't a full implementation of everything Open Telemetry has to offer. Its goal is to provide the easiest way to work with traces and span in a Laravel app.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport