Node.js server monitoring with Monitis, part 1

Node.js is a fairly new open-source framework for building highly concurrent server applications in server side JavaScript. Despite being on version 0.6 it is getting more and more attention because it uses a concurrency model that shows great promise in scalability – event-driven asynchronous Input/Output. This model can potentially handle thousands of concurrent user-requests and do that with a tiny memory footprint. This cannot be done with the traditional multi-threaded concurrency model e.g. enterprise Java or well-known Apache server.

You might ask the question, why do we need to monitor Node.js server? Every server, especially in real production, requires special attention to its health state. Evaluation of the server’s health is done automatically by a monitoring solution that measures a set of metrics. Generally, Server Health Monitoring is fundamentally concerned with observing how a server reacts to the operating load placed upon it. The purpose of such monitoring is to prevent server failures by ensuring that the server always retains sufficient capacity to conduct the required tasks.

Unfortunately, although the Node.js server is already used in production, it doesn’t yet have a successful monitoring tool set and corresponding software support. Below is a short list of famous companies already using Node.js

  • LinkedIn is using Node.js to power their Mobile Server, which powers the iPhone, Android, and Mobile Web products.
  • Yahoo! uses Node.JS within the Livestand product infrastructure.
  • Yammer uses Node.js
  • Microsoft recently started supporting Node.js on Azure
  • VMware is developing the Cloud Foundry platform-as-a-service, which includes support for Node.js

There are two fundamental principles while monitoring any object.

1. The monitor should collect as much important information as possible that will allow to accurately evaluate the health state of an object.
2. The monitor should have little to no effect on the activity of the object.

In our next post we will walk you through an implementation of Node.Js monitoring that incorporates these principles.

See also

6 Node.js Recipes – Working with the File System

Getting Started with Node.js