Sorry if this question is too vague, wasn't sure where/how else to ask this. We are building an online food ordering application which has 3 separate dashboards. 1) User Dashboard 2) User's Company Dashboard and 3) Admin Dashboard. We are using the MERN stack and it is a fairly straightforward application. What I'd like to know is if there is any ONE tool we can use to monitor the performance and any potential issues the application may throw up. I searched around and found services like Rollbar.com but it (and many others) seem to be geared towards large apps. Any recommendations would be greatly appreciated!
Disclaimer: I'm an active developer for the software I'm about to recommend, so I'm at least a bit biased.
While it might be slight overkill for your particular use case, Netdata should be able to do a vast majority of the monitoring you would potentially be interested in. It's a bit more focused on the performance monitoring side of things, but it can also do alerts when things go wrong. Features include:
- Near real-time data collection. By default, most of the metrics Netdata collects are collected at 1 second intervals, meaning that it's very easy to see what impact changes you make have almost immediately.
- Minimal overhead. Despite the high collection frequency, Netdata uses very little CPU time (usually less than 5% on modern server systems, even when collecting thousands of metrics) and very little RAM (tracking 3k metrics at 1 second resolution with 12 hours of history and no thinning takes about 500MB of RAM, including Netdata itself).
- Almost no disk I/O. With the default configuration, Netdata keeps everything in memory and only touches your disks when you start or stop it.
- Minimal configuration. Netdata is designed to autodetect as much as reasonably possible without needing any manual configuration. In most cases, if you're using standard configurations for a piece of software that Netdata can monitor, Netdata will automatically detect it and monitor everything it can.
- Comprehensive monitoring of the whole system. Netdata tracks everything from basic stuff like CPU and memory usage, all the way down to super-detailed specifics like exact types of network errors or precise request timings for web servers.
- The frontend for displaying the data is integrated. Netdata comes with it's own built-in web server which provides a tightly integrated frontend for displaying graphs of all the data it collects.
- Native handling of alerts. Netdata provides an integrated system for automatically sending alerts when metrics it collects go beyond expected values. Configuration of these alerts uses an easy to learn YAML syntax, and it can dispatch notifications through a wide variety of popular messaging systems, as well as through email or directly to the system log.
The one big downside I see is that it doesn't provide native support for directly monitoring Node.js applications (though it does include a bundled plugin for monitoring MongoDB). However, it includes a fully integrated statsd server, so you could easily have the application itself report metrics directly to Netdata and have it display them alongside all the other data it collects, including being able to create alerts to trigger on those metrics, and having them automatically sent to whatever TSDB you might use for long-term storage.