[ GLOSSARY ]

What is APM?

QUICK ANSWER

What is Application Performance Monitoring (APM)?

APM — Application Performance Monitoring — is software that observes a running application's behavior and reports on it. An APM captures HTTP requests, database queries, exceptions, queued jobs, scheduled tasks, and external calls, then surfaces that data as dashboards, trends, grouped issues, and alerts. It's how production teams know their software is healthy without waiting for users to complain.

Updated · 2026-06-04

Most web apps are fast right up until they aren't. A route that returned in 80ms last month starts taking two seconds, and the way you find out is a customer email. APM is the category of tooling that closes that gap. Instead of hearing about slowness and errors from your users, you see them on your own dashboards, usually first.

The word that carries the meaning in "Application Performance Monitoring" is application. Plenty of tools watch your servers — CPU, memory, disk. An APM watches the code running on them: which routes are slow, which queries repeat, which jobs fail, which exceptions only started showing up after this afternoon's deploy. For a Laravel app that means hooking into the request lifecycle, the query builder, the queue, the scheduler, and the exception handler, then recording what actually happens in production.

What APMs capture

An APM instruments the application runtime, which is a long way of saying it sits inside your app and watches it work. In Laravel that happens through the framework's existing events rather than by editing your code. The official laravel/nightwatch package, for instance, listens to the signals Laravel already emits for requests, queries, jobs, and the rest, so you don't annotate anything by hand. A complete APM records:

  • Requests — route, method, duration, status code, user, memory usage
  • Exceptions — stack trace, request context, fingerprint, first/last seen
  • SQL queries — normalized pattern, duration, bindings, trace to request
  • Queue jobs — class, attempts, duration, failure stack
  • Scheduled tasks — invocation history, duration, exit code
  • Cache operations — hits, misses, duration per key pattern
  • Outgoing HTTP requests — domain, path, status, duration
  • Logs — correlated by trace ID with the request that produced them

None of that is useful as raw events, though. Ten million query records is just a bigger haystack. The value is in what the tool does with them, and that's the part most people underestimate the first time they set one up.

A worked example

Say checkout starts feeling slow. Here is what each kind of tool tells you.

Your server metrics are green. CPU at 15%, memory fine. Infrastructure monitoring says nothing is wrong, because from the box's point of view nothing is.

Your logs have a line for the checkout request and a couple of info entries you added months ago. They confirm the request happened. They don't tell you it was slow, or why.

An APM shows the checkout route at a p95 of 2.1 seconds, up from 240ms a week ago. You open one slow request and read the timeline: 180ms in PHP, then the same select * from products where id = ? query running 47 times in a row. That's an N+1, probably from a relationship that stopped being eager-loaded in last week's refactor. You found in thirty seconds what would otherwise have been an afternoon of guessing. (If that pattern is new to you, we cover it in N+1 queries.)

How an APM measures performance

"Slow" isn't a single number. A few that matter, and that any APM worth using will track for you:

Latency, as percentiles rather than averages. The average hides your worst experiences. If most requests are quick but one in twenty takes four seconds, the average still looks fine while a real share of your users suffer. p95 (the slowest 5% of requests) and p99 (the slowest 1%) are where that pain actually lives. We go deeper in p95 vs p99 latency.

Throughput, the requests per minute a route handles, so you know whether a slow endpoint is also a busy one. A two-second admin page nobody opens matters less than a 400ms endpoint that runs a million times a day.

Error rate, the share of requests and jobs that fail, tracked over time so a deploy that quietly doubles it becomes obvious. And saturation, how close your queues, workers, and database connections are to their limits before they tip over.

How APM differs from nearby tools

LOGS

Unstructured text emitted by your app. Useful for audit and forensic analysis. Hard to monitor — requires aggregation, indexing, and custom parsing before you can extract metrics. APMs complement logs, they don't replace them.

INFRA METRICS

CPU, memory, disk I/O, network. Tells you whether the box is healthy. APMs tell you whether the application is healthy. A box at 20% CPU can still have slow endpoints.

ERROR TRACKERS

Exception-focused tools like Flare, Bugsnag. A subset of APM. An error tracker tells you about thrown exceptions; a full APM tells you about everything including latency trends and queued-job health.

OBSERVABILITY

Broader discipline covering metrics, logs, traces, and events across a full system. APM is a product category within observability focused on application-layer performance.

What a good APM does with the data

  • Groups — queries by normalized pattern, exceptions by fingerprint, jobs by class
  • Computes percentiles — p50 / p95 / p99 durations instead of misleading averages
  • Alerts on change — new exception fingerprint, spike, regression after deploy
  • Correlates — from a slow request you can drill into the N+1 that caused it
  • Trends — is this metric getting worse over time, not just right now

When you actually need one

Honestly, not always. A side project with ten visitors a day doesn't need an APM, and I'd tell you to skip it. dd() and the Laravel log are plenty at that size.

It starts to matter when other people depend on the app and you can no longer watch it by hand, when "is the site okay?" stops being a question you can answer by refreshing a page. The usual sign you've crossed that line is that you found out about a problem from a customer instead of from your own tools. Closing that gap is the whole job of an APM.

Laravel APM options

  • NightOwl — BYOD Postgres, from $5/mo flat, built on laravel/nightwatch
  • Laravel Nightwatch Cloud — official, usage-based
  • Sentry, Bugsnag, Flare — error-first, lighter APM
  • Scout APM, Inspector.dev, New Relic, Datadog — broader coverage, higher price

See our comprehensive Laravel monitoring comparison.

Frequently asked questions

What does APM stand for?

APM stands for Application Performance Monitoring (sometimes Management). The 'application' is the key word — APMs observe the behavior of a running application, not just infrastructure metrics like CPU or memory. A Laravel APM captures every HTTP request, query, job, exception, and scheduled task.

What's the difference between APM and logging?

Logs are text lines your application emits. APM is structured telemetry: durations, percentiles, counts, grouped patterns, trace IDs tying related events together. You can query logs; you can monitor with an APM. Most production teams use both — logs for audit and investigation, APM for performance and error trends.

What's the difference between APM and observability?

Observability is the broader discipline of understanding a system from its outputs — metrics, logs, traces, events. APM is a product category within observability focused on application-layer performance. Every APM is an observability tool; not every observability tool is an APM.

Do I need an APM for my Laravel app?

For a hobby project, no. For a production app with paying users, yes. Without APM you won't know a page is slow until a customer complains, you won't know about exceptions until someone reads the logs, and you'll spend hours investigating issues that a good APM surfaces in seconds.

What should a Laravel APM monitor?

At minimum: HTTP requests with duration and status, exceptions with fingerprinting, SQL queries with pattern grouping, queued jobs with attempts and failures, scheduled tasks with invocation history, cache hit/miss, outgoing HTTP requests, and logs with trace correlation. The official laravel/nightwatch package covers all of these.

PRICING

Flat pricing. No event caps. No per-seat fees.

14-day free trial, no credit card. Your PostgreSQL, your data.

HOBBY

$5 /month

1 app · 14 days lookback · all Laravel events

TEAM

$15 /month

Up to 3 connected apps · unlimited environments · all Laravel events

AGENCY

$69 /month

Unlimited apps · unlimited agent instances · same flat rate at any traffic