metlog-node is a Node.js client for the “Metlog” system of application logging and metrics gathering developed by the Mozilla Services team. The Metlog system is meant to make life easier for application developers with regard to generating and sending logging and analytics data to various destinations. It achieves this goal (we hope!) by separating the concerns of message generation from those of message delivery and analysis. Front end application code no longer has to deal directly with separate back end client libraries, or even know what back end data storage and processing tools are in use. Instead, a message is labeled with a type (and possibly other metadata) and handed to the Metlog system, which then handles ultimate message delivery.
The Metlog system consists of three pieces:
- This is the application that will be generating the data that is to be sent into the system.
- This is the initial recipient of the messages that the generator will be sending. Typically, a metlog router deserializes the messages it receives, examines them, and decides based on the message metadata or contents which endpoint(s) to which the message should be delivered.
- Different types of messages lend themselves to different types of presentation, processing, and analytics. The router has the ability to deliver messages of various types to destinations that are appropriate for handling those message types. For example, simple log messages might be output to a log file, while counter timer info is delivered to a statsd server, and Python exception information is sent to a Sentry server.
The metlog-node library you are currently reading about is a client library meant to be used by Node.js-based generator applications. It provides a means for those apps to insert messages into the system for delivery to the router and, ultimately, one or more endpoints.
More information about how Mozilla Services is using Metlog (including what is being used for a router and what endpoints are in use / planning to be used) can be found on the relevant spec page.
There are two primary components to the metlog-node library, the
config class which exposes a factory function to generate a configured
client, and the various
api/senders classes, one of which must
be provided to the factory function and which handles the actual
delivery of the message to the router component.
The MetlogClient must be instantiated with the factory functions. The raw class definition is not exposed through the public api.
Folks new to using Metlog will probably find Metlog Configuration a good place to get started.
Welcome to metlog-node’s documentation!¶