How to effectively monitor the performance of Meteor projects?

I know there is a question in the subject, but I rather hope to start a discussion instead of getting a simple answer :slight_smile:

What are your thoughts on the subject? What and how do you measure the performance of your apps?

What does “performance monitoring” even means for you?

I have the courtesy of working at Vazco, where we not only maintain our Meteor projects but also do consulting and help others in this regard, and we noticed that the idea of “monitoring performance” varies significantly between projects.

We have written a blog post about monitoring performance, mentioning some low-hanging fruits there, but by no means it covers the whole issue.

This is why I would like to know a little more about how you look at the problem. What tooling are you using? Meteor Cloud APM, Kadira APM, Monti APM? Any not-meteor-specific like DataDog or some ELK stack? Do you do something special for the MongoDB performance monitoring?

Do you analyze the data over time to know where you’re going, or instead focus on this only if you detect some problems?

It would be nice to have some overview of what is achievable, inspiring others to follow.

Some links to get started, feel free to post your own:

3 Likes

MontiAPM really is all you need. A few alerts for high response times and high CPU/memory usage should be good enough for production alerts. The breakdown of throughput and response times of each method and sub make it easy to see what’s causing bottlenecks (DB reads, network time, compute, etc), and a server side CPU profiler can really help find any issues.

Meteor Cloud’s APM is just a worse version of MontiAPM with less features really, like no alerts and no CPU profiler.

1 Like

We use our own Kadira APM server with slack notification integration to receive alerts about CPU/RAM.

Also we have ELK stack to store logs. Then we use it to track 3d party errors like payment gateway errors, or to debug a job’s flow.

There is MongoDB Cloud stats, it is a free instrument to get info about ops and replica’s and in general.

We’re using MontiAPM for the Meteor server. For MongoDB, I found MongoDB Compass pretty useful, as it lets you examine the run-time behavior of a query. So you can easily see how it is affected by indices and which indices you can drop because they are never being used. A more comprehensive tool is keyhole, but its setup is quite complex.

1 Like