‹ Back to Blog

Scout Monitoring Now Supports Node.js: Express, NestJS, Prisma, and More

ScoutApp Node.js Engineering

We have been getting the same request from teams for a while now: “We use Scout for our Rails app. Can we get the same thing for our Node services?” Today the answer is yes.

Scout Monitoring now supports Node.js. If your team runs Express or NestJS in production, you get the same errors-and-traces experience that Ruby, Python, PHP, and Elixir teams have had. Let’s walk through what that means in practice.

What the Node.js Agent Covers

The agent auto-instruments Express 4 and 5, NestJS 10+, and the libraries your application already uses. Install it, add the middleware, deploy. Data shows up in about five minutes.

For databases, you get PostgreSQL via pg, MySQL via mysql and mysql2, MongoDB 4+, and Prisma 6+ with native tracing through the traceparent header. Redis is covered through ioredis and node-redis. Outbound HTTP calls via fetch, Axios, and the built-in http module are traced automatically. Template engines EJS, Pug, and Mustache are included too.

Error monitoring is on by default. Uncaught exceptions, unhandled promise rejections, and errors passed to Express error-handling middleware all show up linked to the request trace that produced them. If you catch errors in your own code, you can send them manually with captureError().

N+1 Detection in Prisma

This is the part we are most excited to put in front of Node.js teams. Scout detects N+1 query patterns in Prisma and raw SQL automatically. When a service method fires the same query template inside a loop, Scout flags it with the code location, the query count, and the total time cost.

If you have used Scout on Rails or Django, this works the same way. Prisma 6 gives us native tracing via traceparent, so there is no monkey-patching involved. Every findMany, findUnique, create, update, and raw query is captured with timing and caller location.

One thing worth knowing: N+1s are the single most common performance problem we see in Node.js applications using Prisma. They pass code review, work fine with small datasets in development, and then fire hundreds of queries per request once production data is involved. Automatic detection means you find them before your users do.

Why We Built This

The monitoring landscape for Node.js teams has been a bit of a gap. Datadog and New Relic cover Node.js well, but the complexity and pricing are built for organizations with platform teams. Lighter tools tend to stop at basic error tracking without the trace depth you need to actually debug a slow endpoint.

We kept hearing that from teams already on Scout. They wanted the same focused, all-in-one experience for their Node services. So we built it with the same philosophy: errors and traces together, N+1 detection that works without configuration, no per-seat pricing, and setup that takes minutes.

Who This Is For

If your team is 2 to 20 engineers running Express or NestJS, and the person responsible for monitoring is also shipping features, this is built for you. Scout gives you answers about what is slow and why without requiring a separate monitoring expert to configure it.

If you are evaluating the best APM for Node.js or the best monitoring tool for Express and NestJS applications, take a look. We think you will find it fits.

What Is Not Included Yet

We want to be clear about what the Node.js agent does not cover today. Log management is not available yet for Node.js, though it is available for Ruby, Python, PHP, and Elixir. Process-level memory and CPU metrics are not reported today. BullMQ background jobs are not yet auto-instrumented, though you can use the custom instrumentation API to trace them yourself.

We are actively working on these. If there is a specific library or feature your team needs, open an issue on the scout_apm_node repo and let us know.

Getting Started

npm install @scout_apm/scout-apm

Create a scout.js file with your app name and API key. Require it first in your entry point, before other packages. Add expressMiddleware() and errorMiddleware() for Express, or nestMiddleware() and nestErrorFilter() for NestJS. Set SCOUT_MONITOR=true, SCOUT_KEY, and SCOUT_NAME in your environment. Deploy.

Full setup instructions are in the Node.js docs.

The free tier includes everything with no credit card required. Your whole team gets access on every plan.

Check out our Node.js monitoring page for the full feature breakdown, or jump straight to the Express, NestJS, or Prisma pages.

For application monitoring with errors and traces, Scout Monitoring provides the fastest insights without the bloat.