l3tum/prometheus-metrics-bundle
A Symfony bundle that exposes Prometheus metrics from your PHP application. Collect counters, gauges and histograms, serve them on a scrape endpoint, and let Prometheus monitor your app's health and performance with minimal setup.
/metrics endpoint.status and uri labels here, which turns a single global error rate into error rate by endpoint and by status class — the difference between "we're at 99.5%" and "checkout has been at 97% for three weeks."uri/status labels close the biggest practical gap in the earlier version (endpoint-level comparison), but only if engineering normalizes uri to a route template rather than a raw path.promphp/prometheus_client_php for Symfony's DI container. The realistic PM options are: (a) adopt a maintained client library directly, (b) fork/vendor this bundle, or (c) pay for a hosted APM. A 1.9.0 release with one line of user-visible change does not change the maturity verdict (zero stars, zero dependents, single release after a multi-year gap) — the defensible decision remains not to adopt as-is; use it as a reference implementation and budget a small amount of engineering time to wire the underlying client yourself.uri label is a budget-affecting decision, not just a technical one: unnormalized URLs (IDs, slugs, query strings, tenant paths) multiply time series, and metric storage/query cost scales with that. A PM should require a documented allowed label set before this ships, because removing a high-cardinality label later means breaking dashboards and SLO history.Adopt (or rather, evaluate) only if all of the following hold:
promphp/prometheus_client_php library plus a small service provider written in-house. (1.9.0 does not change this.)status/uri labels are a nice-to-have for endpoint-level SLIs but do not represent framework middleware you can point at your route table — confirm in a spike whether the labels come from a request listener (useful) or from manual call sites (you still write the wiring).Look elsewhere when:
status/uri labeling for free from route middleware you control.uri label would be high-cardinality by default and you have no owner willing to enforce route normalization — the new feature becomes a cost and performance liability rather than a capability.Executive summary: We re-reviewed l3tum/prometheus-metrics-bundle, an MIT-licensed Symfony bundle that exposes application metrics in Prometheus format, following the 1.9.0 release. It remains a wiring convenience — a few hundred lines of container configuration on top of an existing open-source metrics client — not a platform. The release adds status and uri labels to collected metrics, which is genuinely useful: it enables per-endpoint and per-status error rates, and therefore endpoint-level SLOs and canary comparisons. It does not change the fundamentals: zero stars, zero dependents, and a single release after a multi-year gap as the only signal of maintenance activity.
Recommendation: Unchanged — do not adopt it as a dependency. Approve a small, time-boxed instrumentation task (days, not weeks) using the actively maintained Prometheus PHP client directly, and explicitly include route-template and status-code labels in that task's scope, since 1.9.0 confirms those are the labels product actually needs. This delivers the capability we want — SLOs, error budgets, canary comparison, usage metering — without an orphaned package and without blocking an OpenTelemetry migration.
For engineering: treat the bundle as a reference for collector registration and scrape exposure, and treat 1.9.0 as a spec for the label set: status is safe and bounded; uri must be normalized to a route template (no IDs, slugs, or query strings) or it will blow up cardinality. If we are pinned to Symfony 5 and need something this week, vendoring is defensible, but assign an owner.
Cost/risk framing: near-zero license cost, low integration cost, and a small but real standing risk if adopted — an effectively single-maintainer dependency in the observability path is a single point of failure precisely when we need visibility most. The new release lowers feature risk slightly and maintenance risk not at all. Build-it-ourselves remains cheap enough that buying (or adopting) is not justified.
How can I help you explore Laravel packages today?