Application performance monitoring (APM) is how you tell whether your application is fast, working, and not throwing errors in production. It measures four things, the golden signals: latency, traffic, errors, and saturation.1 For a small team the goal is not to build dashboards to stare at, it is to know the moment something breaks and why. This post covers what APM means, what it measures, how to actually set it up, and which tools fit a team of two to fifty.
What application performance monitoring actually is
Application performance monitoring is the practice of measuring how your application behaves in production from the point of view of the people using it. The key word is application. Plenty of monitoring watches the machine: CPU, memory, disk. APM watches the code running on it: how long a checkout takes, whether the login endpoint is returning errors, which database query is dragging a page down.
It answers one question, in real time: are users having a good experience right now, and if not, where is it breaking? A server can sit at 20% CPU and look perfectly healthy while it returns errors to every customer. APM catches that, because it watches the requests, not the machine.
APM and observability get used interchangeably, but they are not the same. Observability is the broader idea: can you answer new questions about your system from the data it already emits, its logs, metrics, and traces, without shipping new code to find out.2 APM is one focused slice of that, aimed at performance and errors. You can have solid APM without full observability, and most small teams start there.
What APM measures: the four golden signals
Google's Site Reliability Engineering book names four signals to watch above all others, the golden signals.1 If you track nothing else, track these.
| Signal | What it tells you | Example |
|---|---|---|
| Latency | How long requests take, split by success and failure | The 95th percentile of /checkout is 2.1s |
| Traffic | How much demand the system is getting | 400 requests per second on the API |
| Errors | The rate of requests that fail | 3% of /login calls return a 500 |
| Saturation | How full your most constrained resource is | The database connection pool is at 90% |
One detail that trips people up: measure latency for failed requests separately. A fast error is still an error, and if you average it into your latency numbers it makes a broken endpoint look healthy.1
Two shorthands come up constantly, and both map onto the golden signals. The RED method (Tom Wilkie) watches Rate, Errors, and Duration, the view for services that handle requests.3 The USE method (Brendan Gregg) watches Utilization, Saturation, and Errors, the view for the resources underneath, like CPU, memory, and queues.4 RED for your services, USE for your resources.
Metrics, logs, and traces: what APM is built on
The golden signals are what you watch. Underneath, they are derived from three kinds of telemetry, the signals defined by the OpenTelemetry project: metrics, logs, and traces.5
- Metrics are numbers measured over time: request counts, error rates, latency percentiles, queue depth. They are cheap to store and ideal for the golden signals and for alerting.
- Logs are timestamped records of discrete events. They carry the detail a metric cannot: the actual error message, the user id, the stack trace.
- Traces follow a single request as it moves across services, showing where the time went and where it failed. The technique comes from Google's Dapper paper, which described tracing a request across a distributed system at scale,6 and the way trace context is passed between services is now a W3C standard.7
A trace is what turns "the checkout is slow" into "the checkout is slow because the inventory service is waiting 1.8 seconds on a single database query." That jump, from a symptom to a cause, is the whole point of APM, and it is why traces matter more than any dashboard. It is also the method behind why is my app slow, which walks through reading a slow request span by span.
How to actually do APM, in five steps
The concept is simple. Here is the practical version for a small team, in order.
- Instrument with OpenTelemetry. OpenTelemetry is the open standard for generating telemetry, and it ships auto-instrumentation that hooks into common frameworks, database drivers, and outbound HTTP calls.5 You get traces and metrics on your real traffic with little or no code change, and because it is vendor-neutral you are not locked into one vendor's proprietary agent.
- Decide what to watch, and keep it short. You do not need the golden signals on every endpoint. Pick the routes that matter to the business: checkout, login, the API your customers call, the background job that has to finish. Watching everything equally is how you end up watching nothing. This is where Fixter helps directly. Instead of leaving you to guess, it reads your codebase, your infrastructure, and what your product actually does, and works with you in Claude Code to define the alerts worth having: payment failures, auth errors, latency on the routes that matter.
- Set alerts on symptoms, not causes. Alert when users feel something: latency past a threshold, error rate climbing, a critical route failing. The SRE guidance is to page on symptoms a human needs to act on, not on every internal blip,1 because an alert that does not require action is just noise. We wrote about where that goes wrong in alert fatigue.
- Have a way to investigate when one fires. An alert is the start, not the answer. When latency spikes you need to get from the metric to the trace to the log line fast. This is the step traditional APM leaves entirely to you, and it is the step that eats the most time.
- Iterate. Every real incident teaches you which signal would have caught it sooner. Add that one. Delete the alerts that never meant anything. APM is a short list you keep tuning, not a wall of charts you set up once.
With Fixter that fourth step is a question you ask in plain language from your editor, instead of five dashboards you open by hand. You ask; it pulls the traces and logs and answers:
APM tools, and what each one is built for
The tools sit on a spectrum from heavyweight all-in-one suites to lighter, open-standard options. None is wrong; they are built for different sized teams.
| Tool | Best for | Setup effort | Style |
|---|---|---|---|
| Datadog | Larger teams that want everything in one place | High | Dashboard-heavy, proprietary agent |
| New Relic | Teams wanting all-in-one with usage-based pricing | Medium to high | Dashboard-heavy |
| Grafana + SigNoz | Teams that want open source and OTel-native | Medium, you build it | Dashboards you assemble |
| Sentry | Error tracking first, light performance | Low | Error-centric |
| Fixter | Small teams that want answers, not dashboards | Low, OTel-native | Investigates and defines alerts via MCP with an AI agent, no dashboards |
The incumbents are genuinely powerful, and if you have a platform team to run them, they pay off. The catch for a small team is that the power comes with operational weight: agents to maintain, dashboards to build, and pricing that climbs with log volume and custom metrics. We break down where that bill goes in the Datadog alternatives guide.
Why traditional APM is a bad fit for small teams
APM as a discipline grew up inside large operations teams, where there were people whose job was to build dashboards and watch them. The golden signals, the RED and USE methods, the tracing techniques: all of it is sound, and all of it still applies to a team of five. The framing is what does not transfer.
A small team does not have someone to live in dashboards. When something breaks at 2pm on a Tuesday, the person who gets pulled in is the person who was shipping a feature, and the clock that matters is how fast they get from "checkout is slow" to "the 14:18 deploy dropped an index." Traditional APM is excellent at the first half, collecting and charting the signals, and leaves the entire second half, the investigation, to you.
That gap is the reframe. For a small team the goal of APM is not more dashboards, it is fewer questions left unanswered. The signals should be watched for you, and when one trips, the tool should do the first pass of the investigation and hand you the conclusion. That is the stance behind AI native observability: Fixter instruments with OpenTelemetry, watches the golden signals, and when something breaks it pulls the relevant traces and logs, finds the root cause, and maps the blast radius, queried in plain language over MCP from your editor. You still make the call on the fix. You just do not have to do the digging first. The same idea, applied to graphs you no longer have to read, is in observability without dashboards.
Key takeaways
- APM measures the application, not the server: is it fast, working, and not erroring for real users
- Measure the four golden signals first: latency, traffic, errors, saturation (RED for services, USE for resources)
- Those signals come from three telemetry types: metrics, logs, and traces
- Set it up with OpenTelemetry auto-instrumentation, watch only the routes that matter, alert on symptoms
- For a small team, the win is not more dashboards, it is having the investigation done for you
Frequently asked questions
What is application performance monitoring in simple terms?
Application performance monitoring (APM) is how you tell whether your application is fast, working, and not throwing errors in production. It watches your running code, not just the servers under it, and answers a single question: are real users having a good experience right now, and if not, where is it breaking?
What does APM actually measure?
At minimum, the four golden signals from Google's SRE practice: latency (how long requests take), traffic (how much demand you are getting), errors (the rate of failed requests), and saturation (how full your resources are). For request-driven services this is often simplified to rate, errors, and duration, known as the RED method.
What is the difference between APM and observability?
APM is the practice of measuring application performance, traditionally through pre-built metrics and dashboards. Observability is the broader property of being able to ask new questions of your system from its outputs (logs, metrics, traces) without shipping new code. APM is one well-defined slice of observability, focused on performance and errors.
Do small teams really need APM?
Yes, but not the heavyweight version. A 2 to 50 person team needs to know the moment a critical route slows down or starts failing, and why. What they do not need is a dashboard suite that takes a dedicated person to maintain. The signals matter; the operational overhead of traditional APM does not.
What is the easiest way to set up APM?
Use OpenTelemetry auto-instrumentation. It hooks into common frameworks, databases, and outbound HTTP calls and emits traces and metrics with little or no code change. That gives you the golden signals on your real traffic in an afternoon, and keeps you off any single vendor's proprietary agent.
Sources
- Google, Site Reliability Engineering, "Monitoring Distributed Systems" (the four golden signals)
- OpenTelemetry, observability primer (definition of observability)
- Tom Wilkie / Grafana Labs, the RED method
- Brendan Gregg, the USE method
- OpenTelemetry, signals (metrics, logs, traces) and instrumentation
- Google, "Dapper, a Large-Scale Distributed Systems Tracing Infrastructure"
- W3C, Trace Context Recommendation