Meteor Subscription Monitoring for real-time apps
DDP publications are long-lived, stateful and expensive to get wrong. SkySignal surfaces observer lifetime, driver mix, over-fetching and reactive efficiency so you can ship real-time features with confidence.
Why it is hard
Publications are servers within your server
A Meteor publication is not a request. It is a long-lived server process that holds a cursor open, observes a MongoDB collection and pushes changes down DDP. A generic APM cannot see any of that because no HTTP round trip fires when a document changes. You need a tool that understands pub/sub internals.
When a publication goes bad, it fails quietly. An observer falls back to polling instead of using change streams. A shared multiplexer key disappears and every connection spawns its own observer. A forgotten this.ready()leaves users waiting forever. SkySignal watches for all of these patterns continuously.
Every signal DDP can give you
SkySignal instruments publications at the observer level, not just at the subscription edge, so you see the full picture.
Response time
Time from SUB message to the first ready signal, plus ongoing update latency when documents change.
Observer count and lifetime
See how many server-side observers are alive, how long they stay open and how many DDP clients share each one.
Driver mix
Every observer is tagged as change stream, oplog or polling so you can see exactly what is backing each subscription.
Doc counts and payload
Documents published per subscription, average payload size and update frequency over time.
Reactive efficiency
Know when you have fallen back to polling
Since Meteor 3.5 there are three drivers that can power an observer: change streams, oplog tailing and polling. Polling is orders of magnitude more expensive on MongoDB. SkySignal computes a reactive efficiency ratio - (changeStream + oplog) / total - so you can track the percentage of your observers that are running the right way and catch silent regressions.
How it works
Instrumented at the observer, not at the edge
01
Wrap publish
The agent wraps Meteor.publish so every subscription is tagged with a publication name and connection id.
02
Detect driver
For each observer, the agent inspects the internal multiplexer to record whether it is change streams, oplog or polling.
03
Track lifecycle
Subscribe, ready, update and stop events flow to SkySignal with full context so you can chart lifetime and efficiency.
Over-fetching detection
SkySignal can flag publications that return fields the client never reads. Tighten your field projections, shrink the DDP payload and keep mergebox memory lean.
Leaks get a dedicated tool
Subscriptions that keep observers alive after the client is gone are ranked with 7-signal confidence scoring. See the dedicated Observer Leak Detection page for how that works.
See what your publications are really doing
Install the agent, refresh your dashboard, done.