mmft24/elastic-apm-symfony-bundle
A Symfony bundle that integrates Elastic APM for application performance monitoring, giving you distributed tracing, transaction and span timing, error reporting, and request insights so you can spot slowdowns and failures across your Symfony services.
mmft24/elastic-apm-symfony-bundle is a Symfony bundle, not a Laravel package. There is no service provider, facade, or package auto-discovery. v2.0.0 is a ground-up refactor delivered in a single PR by a first-time contributor, so treat it as a new package — do not assume 1.x namespaces, config keys, or service IDs survived.php -m | grep -i apm), with elastic_apm.enabled=1, a service_name, and a reachable APM Server. If the agent isn't reporting at the PHP level, the bundle cannot help you.Extension/Configuration classes, and the event subscriber/listener directory in src/. Those three tell you (a) what config tree it expects, (b) what it registers, and (c) which classes are framework-agnostic enough to reuse in Laravel.elastic/apm-agent-php directly with your own middleware. For most Laravel apps, option 2 is less surface area.finally — and confirm the transaction appears in Kibana APM before instrumenting anything else.ApmServiceProvider that binds the bundle's transaction/span services into Laravel's container and translates Symfony EventDispatcherInterface dispatches into Laravel events (or bypasses the dispatcher and calls the services directly from middleware).ApmTransaction middleware that starts a transaction in handle() and ends it in terminate()/finally, labelling route name, method, status code, and authenticated user id. Keep it registered globally but no-op when ELASTIC_APM_ENABLED=false.JobProcessing/JobProcessed/JobFailed listeners to open a transaction per job with the job class as the transaction name. This is where the bundle's console/job listeners can be reused if they aren't tied to Symfony's console events.config/elastic_apm.php, then push those values into the container as parameters so the reused services receive what they expect. Drive enabled and transaction_sample_rate from env so local, test, and CI never emit spans.Kernel never boots in Laravel, so the bundle's Extension::load() and boot() never run. Missing configuration surfaces as "agent enabled, no data" rather than as an exception.composer.json and read the diff, not the release notes.server_url/secret_token, TLS failure, or transaction_sample_rate set to 0. Set elastic_apm.log_level=debug and check the agent log before suspecting the bundle.Authorization headers can end up in spans. Configure sanitization and set ELASTIC_APM_CAPTURE_BODY=off / CAPTURE_HEADERS=false where required.transaction_sample_rate below 1.0 on high-traffic endpoints.Tracer interface so swapping to the raw agent or a Laravel-native package later is a one-file change.How can I help you explore Laravel packages today?