Feature - Method Tracing

Meteor Method Tracing built for DDP

See every Meteor method call with timing breakdowns, MongoDB queries, outbound HTTP and error context. Stop guessing which method is slow and fix it with the data already in front of you.

Why method tracing matters

Methods are where your app spends its time

In a Meteor application, nearly every user action is a DDP method call. Sign ins, form submits, admin actions and background triggers all flow through Meteor.methods. When a method is slow, your UI feels slow. When a method throws, a user sees an error. A method profiler that understands DDP is the fastest path from a vague report of "the app is laggy" to a concrete line of code to change.

Generic APM tools treat a Meteor method as just another HTTP handler, so they miss the structure that matters: sync vs async execution, the this.unblock() boundary, the MongoDB calls that fan out inside a single invocation and the user session that triggered it. SkySignal was written for Meteor, so it sees all of that.

What a single method trace contains

Every traced method is a structured timeline, not a single number. Drill into any call to see exactly where the time went.

Timing breakdown

Total duration, compute time, wait time and async boundary tracking so you can tell CPU-bound code from I/O waits.

MongoDB queries

Every query issued inside a method is captured with collection, filter shape, duration and whether an index was used.

Outbound HTTP

Fetch and undici calls made from inside methods are traced via Node diagnostics_channel so third-party latency is visible.

Errors and context

Stack traces, user id, session id and sanitized arguments travel with every failed method so reproducing is trivial.

How it works

From DDP packet to flame graph in one install

01

Install the agent

Add the skysignal:agent Atmosphere package. The agent wraps the DDP method dispatcher on boot - no code changes to your methods.

02

Collect in-process

Every inbound method starts a trace. MongoDB queries, outbound HTTP and awaited work are tied to the trace via AsyncLocalStorage.

03

Ship and query

Traces are batched and streamed to SkySignal. Sort by p95, filter by user or error, and jump from an alert straight to the offending call.

N+1 and unblock detection

Methods that call findOne inside a loop are flagged as N+1 candidates. Methods that never call this.unblock() and hold the DDP queue are highlighted separately - both are single click fixes that you would never find in a generic trace list.

Async-aware in Meteor 3

Meteor 3 methods are natively async. SkySignal uses AsyncLocalStorage to keep trace context alive across every await so awaited collection calls, aggregations and outbound fetches are all attributed to the right method. Meteor 2 fibers-based apps are fully supported too.

Stop guessing. Start tracing.

Free for 14 days. No credit card. 5 minute install.