Bunyan is a straightforward logging library
for Node.js applications. Bunyan's output is line delimited JSON, which makes
it easy to consume with your normal unix command line utilities like
sed, and also with its own CLI utility, or with the json cli
Bunyan also comes with built-in support for DTrace, which allows you to keep
your existing log level for your existing destinations (e.g.
INFO) but enable
at runtime a more verbose level (e.g.
TRACE) and be notified in user space of
those log entries, without them also going to your existing destinations and
potentially filling the disks. DTrace is completely safe to use at runtime, so
if enabling higher levels of logging would result in detrimental effect your
system DTrace will exit before doing your system harm.
That is, you've already defined in your configuration the level at which you want your application to log, but your process is currently misbheaving and you're looking to find out more information without potentially restarting the service or increasing the amount of storage where your logs are stored. With bunyan and DTrace you can enable your process to send to you the log level you're interested in at runtime.
# bunyan -p * [2013-09-27T18:16:19.679Z] DEBUG: test/1076 on sharptooth.local: something went wrong
Fast is a lightweight library for efficiently handling JSON messaging across a TCP channel. At its base it was created to enable message-based RPC, where the result for a given command may induce a series of related objects being streamed to the client. Designed with observability in mind, fast also comes with DTrace support, allowing you to quickly identify the performance characteristics of your server and clients.
kang is a debugger for distributed systems: it fetches, aggregates, and presents program state for consumption by both humans and automated tools. The goal is to allow each component of the distributed system to describe the objects it knows about (and potentially a small amount of metadata suggesting what to do with this information) so that the kang system can fetch, aggregate, and present this information usefully.
Restify is a module for creating and consuming REST endpoints. Designed specifically to increase the observability and debugability of your application, Restify comes with first class Bunyan support as well support for DTrace. With Bunyan and DTrace support, you're gaining the ability to see via the logs or at runtime routes and their latencies over requests.
vasync is a control flow library, inspired
by the patterns found in the async module.
vasync is designed specifically to enable a consumer to have
visibility and observability into their progress for a given task. Such
information is crucial when trying to determine how far along a task was before
an error occurred.
verror extends the base
Error class, and
allows you to define your messages using
printf string formatting. The logic
for your application is often a composition of asynchronous methods, and when
adding error handling you may want to bubble that information up through your
WError which allow you to accumulate
multiple levels of errors through a chain, and either see the combination of
errors in the message (as in
VError) or have a final message in
programmatically be able to access the previous errors in the chain.
workflow built on top of restify, enables you to define orchestration among a series of remote services and their APIs. This allows you to decompose a complex series of operations down to a sequence of discreet tasks with a state machine. Workflow is more than a mechanism to allow you to define a sequence of tasks that are run in a specified order, it also enables you to handle failure states, describe timeouts and define retries, as well as identify stuck workflows.