Skip to content

This package provides a simple way to add OpenTelemetry to your Laravel application.

License

Notifications You must be signed in to change notification settings

overtrue/laravel-open-telemetry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel OpenTelemetry

This package provides a simple way to add OpenTelemetry to your Laravel application.

CI Latest Stable Version Latest Unstable Version Total Downloads License

Installation

You can install the package via composer:

composer require overtrue/laravel-open-telemetry

Usage

Configuration

Publish the configuration file:

php artisan vendor:publish --provider="Overtrue\LaravelOpenTelemetry\OpenTelemetryServiceProvider" --tag="config"

Update the environment variables

You can refer to OpenTelemetry SDK Configuration Instructions

OTEL_ENABLED=true
OTEL_AUTO_TRACE_REQUESTS=true
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_PHP_TRACE_CLI_ENABLED=true
OTEL_SERVICE_NAME=my-app
OTEL_TRACES_EXPORTER=otlp
#OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4318
OTEL_PROPAGATORS=baggage,tracecontext

and other environment variables, you can find them in the configuration file: config/otle.php.

Register the middleware

you can register the middleware in the app/Http/Kernel.php:

protected $middleware = [
    \Overtrue\LaravelOpenTelemetry\Middlewares\MeasureRequest::class,
    // ...
];

or you can set the env variable OTEL_AUTO_TRACE_REQUESTS to true to enable it automatically.

Custom span

You can create a custom span by using the Overtrue\LaravelOpenTelemetry\Facades\Measure facade:

use Overtrue\LaravelOpenTelemetry\Facades\Measure;

Measure::span('your-span-name')->measure(function() {
    // ...
});

or manually start and end a span:

Measure::start('your-span-name');

// ...

Measure::end();

and you can modify the span attributes by using a closure:

Measure::start('your-span-name', function($span) {
    $span->setAttribute('key', 'value');
    // ...
});

// ...
Measure::end();

of course, you can get the span instance by using the Measure::span() method:

$span = Measure::span('your-span-name');
$span->setAttribute('key', 'value');
$scope = $span->activate();

// ...

$span->end();
$scope->detach();

Contributing

You can contribute in one of three ways:

  1. File bug reports using the issue tracker.
  2. Answer questions or fix bugs on the issue tracker.
  3. Contribute new features or update the wiki.

The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.

❤️ Sponsor me

如果你喜欢我的项目并想支持它,点击这里 ❤️

Project supported by JetBrains

Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.

License

MIT