overtrue/laravel-open-telemetry

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

0.0.4 2024-04-26 09:51 UTC

This package is auto-updated.

Last update: 2024-04-30 09:30:21 UTC


README

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

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.

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 OTLE_AUTO_TRACE_REQUESTS to true to enable it automatically.

Watchers

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.

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