PHP code example of stanbic / laravel-opentelemetry
1. Go to this page and download the library: Download stanbic/laravel-opentelemetry library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
stanbic / laravel-opentelemetry example snippets
use Keepsuit\LaravelOpenTelemetry\Instrumentation;
return [
/**
* Service name
*/
'service_name' => env('OTEL_SERVICE_NAME', \Illuminate\Support\Str::slug(env('APP_NAME', 'laravel-app'))),
/**
* Comma separated list of propagators to use.
* Supports any otel propagator, for example: "tracecontext", "baggage", "b3", "b3multi", "none"
*/
'propagators' => env('OTEL_PROPAGATORS', 'tracecontext'),
/**
* OpenTelemetry Traces configuration
*/
'traces' => [
/**
* Traces exporter
* This should be the key of one of the exporters defined in the exporters section
*/
'exporter' => env('OTEL_TRACES_EXPORTER', 'otlp'),
/**
* Traces sampler
*/
'sampler' => [
/**
* Wraps the sampler in a parent based sampler
*/
'parent' => env('OTEL_TRACES_SAMPLER_PARENT', true),
/**
* Sampler type
* Supported values: "always_on", "always_off", "traceidratio"
*/
'type' => env('OTEL_TRACES_SAMPLER_TYPE', 'always_on'),
'args' => [
/**
* Sampling ratio for traceidratio sampler
*/
'ratio' => env('OTEL_TRACES_SAMPLER_TRACEIDRATIO_RATIO', 0.05),
],
],
],
/**
* OpenTelemetry logs configuration
*/
'logs' => [
/**
* Logs exporter
* This should be the key of one of the exporters defined in the exporters section
* Supported drivers: "otlp", "console", "null"
*/
'exporter' => env('OTEL_LOGS_EXPORTER', 'otlp'),
/**
* Inject active trace id in log context
*
* When using the OpenTelemetry logger, the trace id is always injected in the exported log record.
* This option allows to inject the trace id in the log context for other loggers.
*/
'inject_trace_id' => true,
/**
* Context field name for trace id
*/
'trace_id_field' => 'traceid',
],
/**
* OpenTelemetry exporters
*
* Here you can configure exports used by traces and logs.
* If you want to use the same protocol with different endpoints,
* you can copy the exporter with a different and change the endpoint
*
* Supported drivers: "otlp", "zipkin", "console", "null"
*/
'exporters' => [
'otlp' => [
'driver' => 'otlp',
'endpoint' => env('OTEL_EXPORTER_OTLP_ENDPOINT', 'http://localhost:4318'),
// Supported: "grpc", "http/protobuf", "http/json"
'protocol' => env('OTEL_EXPORTER_OTLP_PROTOCOL', 'http/protobuf'),
],
'zipkin' => [
'driver' => 'zipkin',
'endpoint' => env('OTEL_EXPORTER_ZIPKIN_ENDPOINT', 'http://localhost:9411'),
],
],
/**
* List of instrumentation used for application tracing
*/
'instrumentation' => [
Instrumentation\HttpServerInstrumentation::class => [
'enabled' => env('OTEL_INSTRUMENTATION_HTTP_SERVER', true),
'excluded_paths' => [],
'allowed_headers' => [],
'sensitive_headers' => [],
],
Instrumentation\HttpClientInstrumentation::class => [
'enabled' => env('OTEL_INSTRUMENTATION_HTTP_CLIENT', true),
'allowed_headers' => [],
'sensitive_headers' => [],
],
Instrumentation\QueryInstrumentation::class => env('OTEL_INSTRUMENTATION_QUERY', true),
Instrumentation\RedisInstrumentation::class => env('OTEL_INSTRUMENTATION_REDIS', true),
Instrumentation\QueueInstrumentation::class => env('OTEL_INSTRUMENTATION_QUEUE', true),
Instrumentation\CacheInstrumentation::class => env('OTEL_INSTRUMENTATION_CACHE', true),
Instrumentation\EventInstrumentation::class => [
'enabled' => env('OTEL_INSTRUMENTATION_EVENT', true),
'ignored' => [],
],
],
];
Http::withTrace()->get('https://example.com');
use Keepsuit\LaravelOpenTelemetry\Facades\Tracer;
Tracer::newSpan('my custom trace')->measure(function () {
// do something
});
use Keepsuit\LaravelOpenTelemetry\Facades\Tracer;
$span = Tracer::newSpan('my custom trace')->start();
// do something
$span->end();
use Keepsuit\LaravelOpenTelemetry\Facades\Tracer;
$span = Tracer::newSpan('my custom trace')->start();
$scope = $span->activate()
// do something
$scope->detach();
$span->end();
use Keepsuit\LaravelOpenTelemetry\Facades\Tracer;
Tracer::traceId(); // get the active trace id
Tracer::activeSpan(); // get the active span
Tracer::activeScope(); // get the active scope
Tracer::currentContext(); // get the current trace context (useful for advanced use cases)
Tracer::propagationHeaders(); // get the propagation headers
// config/logging.php
'channels' => [
// injected channel config, you can override it adding an `otlp` channel in your config
'otlp' => [
'driver' => 'monolog',
'handler' => \Keepsuit\LaravelOpenTelemetry\Support\OpenTelemetryMonologHandler::class,
'level' => 'debug',
]
]