prism-php / opentelemetry
OpenTelemetry telemetry driver for Prism PHP applications.
Fund package maintenance!
sixlive
Requires
- php: ^8.2
- google/protobuf: ^4.31
- guzzlehttp/psr7: ^2.6
- laravel/framework: ^11.0|^12.0
- open-telemetry/api: ^1.3
- open-telemetry/exporter-otlp: ^1.3
- open-telemetry/sdk: ^1.5
- php-http/guzzle7-adapter: ^1.1
- prism-php/prism: dev-feat/telemetery
- psr/http-factory: ^1.1
Requires (Dev)
- laravel/pint: ^1.14
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.4
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3
- phpstan/phpdoc-parser: ^1.24
- phpstan/phpstan: ^1.11
- phpstan/phpstan-deprecation-rules: ^1.2
- projektgopher/whisky: ^0.7.0
- rector/rector: ^1.1
- spatie/laravel-ray: ^1.39
- symplify/rule-doc-generator-contracts: ^11.2
This package is auto-updated.
Last update: 2025-05-24 17:17:18 UTC
README
Prism OpenTelemetry
OpenTelemetry telemetry driver for Prism PHP applications. This package provides distributed tracing capabilities using OpenTelemetry standards.
Installation
Install the package via Composer:
composer require prism-php/opentelemetry
Configuration
Publish the configuration file:
php artisan vendor:publish --tag="prism-opentelemetry-config"
Add these environment variables to your .env
file:
# Enable OpenTelemetry tracing OPENTELEMETRY_ENABLED=true # OpenTelemetry collector endpoint OPENTELEMETRY_ENDPOINT=http://localhost:4318/v1/traces
Prism Integration
Configure Prism to use the OpenTelemetry driver by updating your config/prism.php
:
'telemetry' => [ 'enabled' => env('PRISM_TELEMETRY_ENABLED', false), 'driver' => \Prism\OpenTelemetry\OpenTelemetryDriver::class, // ... other telemetry settings ],
Or set it via environment variables:
PRISM_TELEMETRY_ENABLED=true PRISM_TELEMETRY_DRIVER=\Prism\OpenTelemetry\OpenTelemetryDriver::class
OpenTelemetry Collector Setup
To receive traces, you'll need an OpenTelemetry collector. Here's a basic Docker Compose setup:
version: '3.8' services: otel-collector: image: otel/opentelemetry-collector:latest command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml ports: - "4317:4317" # OTLP gRPC receiver - "4318:4318" # OTLP HTTP receiver depends_on: - jaeger jaeger: image: jaegertracing/all-in-one:latest ports: - "16686:16686" environment: - COLLECTOR_OTLP_ENABLED=true
Example collector configuration (otel-collector-config.yaml
):
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: batch: exporters: jaeger: endpoint: jaeger:14250 tls: insecure: true service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [jaeger]
Testing
composer test
Code Style
composer format
Static Analysis
composer types
License
The MIT License (MIT). Please see License File for more information.