Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Opentelemetry Symfony Laravel Package

traceway/opentelemetry-symfony

Symfony integration for OpenTelemetry that adds tracing and instrumentation to your applications. Capture HTTP requests, database queries, and service calls, then export spans via OTLP to observability backends such as Jaeger, Tempo, or Traceway for performance monitoring and debugging.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This package is a Symfony bundle — not a Laravel package. That distinction is the single most important finding for a Laravel-centric roadmap. It instruments by registering Symfony bundle extensions, DI compiler passes, and event subscribers against HttpKernel, Console, Messenger, Scheduler, Mailer, Doctrine DBAL, Cache, Twig, and Monolog. Laravel shares underlying Symfony components (http-foundation, console, mailer, process) but does not boot bundles or expose those same extension points, so composer require into a Laravel app will not produce traces. Treat it as (a) a viable adoption path for any Symfony services in the estate, and (b) a reference implementation and semantic-convention baseline for a Laravel-native instrumenter.

Where it does fit architecturally, the design is sound: pure-PHP, no C extension required (ext-protobuf recommended for production), stable semantic conventions, and OTLP export — which means backend-agnostic. That vendor neutrality is the main strategic asset; it lets a Laravel fleet and a Symfony fleet report into one collector and share dashboards rather than fracturing into per-framework APM agents.

Integration feasibility. For a Laravel target: low as-shipped. Estimated effort is not "configuration" but "porting" — reimplementing listeners as service providers and event hooks (Kernel request/terminate, DB::listen, queue job events, Http:: client middleware, console commands). For a Symfony target: high — it is essentially install-and-configure, contingent on Symfony LTS and PHP version support in the compatibility matrix.

Technical risk. Elevated and mostly non-technical. 86 stars and 0 dependents is effectively zero production signal; the opportunity score (36.29) and overall score (19.95) reflect a project that has not been validated by the market. Expect a single-maintainer bus factor. The release date (2026-10-18) should be verified before it appears in any dependency-policy review — anomalous release metadata is a supply-chain and process question, not a footnote. MIT licensing is permissive enough to fork and vendor internally if the instrumentation logic proves worth keeping.

Key questions for the maintainer / spike.

  • Which OpenTelemetry semantic-convention version is pinned, and what is the policy when upstream renames attributes? (Attribute renames silently break dashboards and alerts.)
  • OTLP over gRPC or HTTP/protobuf? Is the exporter batched and non-blocking?
  • Does trace context propagate across Messenger async boundaries and Scheduler workers? Broken async context is the most common and most misleading instrumentation failure.
  • What are the defaults for Doctrine, Cache, and Twig span generation — is there cardinality control and per-instrumentation disable?
  • Does Monolog export redact PII, and is log export opt-in or default-on?
  • Overhead benchmarks at p50/p95 with and without ext-protobuf.
  • Supported PHP / Symfony / Doctrine DBAL / Monolog / Guzzle versions.

Integration Approach

Stack fit. Decide the fleet posture before deciding the package. Two coherent options:

  1. Symfony-present estate: adopt directly in Symfony services; keep Laravel on a separate instrumenter but mandate a shared OTLP contract and shared semantic conventions so the service map is unified.
  2. Laravel-only estate: do not adopt this package. Standardize on the OpenTelemetry PHP SDK plus a Laravel instrumenter, and use this bundle's instrumentation coverage list as the acceptance checklist for what "done" means (HTTP, console, queues, DB, cache, outbound HTTP, log correlation).

Migration path. There is no migration — this is greenfield instrumentation layered onto running services. Sequence it as:

  • Phase 0 — Backend contract. Stand up an OpenTelemetry Collector and choose a trace backend behind OTLP. This is the hedge: it makes the instrumenter choice reversible.
  • Phase 1 — One low-risk service, narrow scope. HTTP kernel + Doctrine DBAL only. Validate span shape, latency delta, and cost per request.
  • Phase 2 — Async and egress. Messenger/Scheduler and outbound HTTP clients. This is where trace continuity is proven or fails.
  • Phase 3 — Logs. Monolog correlation first (trace IDs on existing logs), export second only after redaction is verified.
  • Phase 4 — Metrics. Opt-in only, after span volume and cost are understood.

Compatibility. Run the full matrix in CI before committing: PHP version, Symfony LTS, ext-protobuf present/absent, and conflicts with any existing APM agent (Datadog dd-trace, New Relic, Elastic). Double instrumentation produces duplicate spans, inflated cost, and contradictory latency numbers — a common and expensive mistake.

Sequencing. Backend → collector → single-service pilot → async coverage → logs → metrics → fleet rollout. Do not let the instrumenter choice precede the backend choice; that inverts the lock-in risk.

Operational Impact

Maintenance. Single-maintainer dependency with no dependents to surface regressions. Pin exact versions, avoid floating constraints, and budget for a fork if upstream goes quiet. Semantic-convention upgrades are effectively breaking changes for dashboards — treat them as planned work, not incidental.

Support. No commercial support. Internal ownership must be named explicitly (platform/SRE), with an escalation path and a documented decision on fork-vs-replace if maintenance lapses. A dependency review board should see the star count and dependent count alongside the adoption request.

Scaling. Cost is driven by span volume, and the noisiest instrumentations here are Doctrine, Cache, and Twig — high call counts per request. Enforce collector-side sampling (head sampling for baseline; tail sampling if error/latency retention matters) and disable per-instrumentation where the signal is low-value. Long-running Messenger and Scheduler workers need scrutiny for span accumulation and memory growth; these processes are where instrumentation bugs become incidents.

Failure modes to design against.

  • Collector unreachable — must drop spans, never block or slow requests. Verify exporter timeout and non-blocking behavior under load before rollout.
  • Missing ext-protobuf in production — CPU and latency regression from userland serialization; enforce as a deploy prerequisite, not a suggestion.
  • Cardinality explosion — high-cardinality attributes (user IDs, URLs with IDs) can cause backend rejection or cost spikes.
  • Broken async context — traces that terminate at the queue boundary look like application bugs and erode team trust in the tooling early.
  • Log export amplification — duplicated log volume, new storage cost, and PII exposure.

Ramp-up. Platform team: roughly one sprint to stand up collector, backend, and baseline dashboards. Application teams: a short runbook on reading traces, naming conventions, and when to add manual spans. Realistically two to three sprints from decision to a service map leadership will actually use.

Bottom line for the roadmap. Fund this only if Symfony services exist. If the estate is Laravel, reject the package as a direct dependency, adopt its coverage checklist and semantic conventions, and invest the integration effort in a Laravel-native instrumenter behind an OTLP collector. Low adoption, zero dependents, and a framework mismatch make this a reference implementation, not a platform commitment.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast