This package provides a simple way to add OpenTelemetry to your Laravel application.
You can install the package via composer:
composer require overtrue/laravel-open-telemetry
Publish the configuration file:
php artisan vendor:publish --provider="Overtrue\LaravelOpenTelemetry\OpenTelemetryServiceProvider" --tag="config"
OTLE_ENABLED=true
OTLE_SERVICE_NAME=your-service-name
OTLE_AUTO_TRACE_REQUESTS=true
OTLE_DEFAULT_TRACER=http-json
OTLE_HTTP_JSON_ENDPOINT=http://localhost:4318/v1/trace
OTLE_HTTP_BINARY_ENDPOINT=http://localhost:4318/v1/trace
OTLE_GRPC_ENDPOINT=http://localhost:4317/v1/trace
//...
and other environment variables, you can find them in the configuration file: config/otle.php
.
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 OTLE_AUTO_TRACE_REQUESTS
to true
to enable it automatically.
This package provides some watchers to help you trace your application:
Overtrue\LaravelOpenTelemetry\Watchers\DatabaseQueryWatcher
to trace database queries.Overtrue\LaravelOpenTelemetry\Watchers\CacheWatcher
to trace cache operations.Overtrue\LaravelOpenTelemetry\Watchers\QueueWatcher
to trace job execution.Overtrue\LaravelOpenTelemetry\Watchers\RedisWatcher
to trace redis operations.Overtrue\LaravelOpenTelemetry\Watchers\HttpClientWatcher
to trace http client requests.Overtrue\LaravelOpenTelemetry\Watchers\LogWatcher
to trace log operations.
You can enable or disable them in the configuration file: config/otle.php
.
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();
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- 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.
如果你喜欢我的项目并想支持它,点击这里 ❤️
Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.
MIT