Telemetry dashboard for node.js apps from the terminal!
Determine in realtime what's happening inside your node process from the terminal. No need to instrument code to get the deets. Also splits stderr/stdout to help spot errors sooner.
Install | Setup | Usage | Using with other programs | CLI options | Customizing layouts ---------------|---------------------|-----------------|-----------------|------------------------------------------|----------------------
NOTE: This module isn't designed for production use and should be limited to development environments.
The preferred method is global install.
npm install -g nodejs-dashboard
Local install works also; just use
./node_modules/.bin/nodejs-dashboardinstead of
nodejs-dashboardto execute.
The dashboard agent needs to be required by your app. There are two ways to do this:
From within a
dev.index.jsscript or other dev entry point simply require the
nodejs-dashboardmodule.
// dev.index.js require("nodejs-dashboard"); require("./index");
To launch:
nodejs-dashboard node dev.index.js
This method utilizes Node's
-rflag to introduce the
nodejs-dashboardmodule. In this setup no code modifications are required. This is functionally equivalent to the above example.
To launch:
nodejs-dashboard -- node -r nodejs-dashboard index.js
nodejs-dashboarduses the Braille Unicode character set to show graphs via the node-drawille dependancy. Ensure your terminal program\'s font supports this character set.
nodejs-dashboarduses several environment variables to modify its behavior. These include some required values to prevent mangled output.
Variable |
Required | Source | Description |
---|---|---|---|
TERM | required | blessed | Terminal value matching terminal program |
LANG | required | blessed | Matches encoding of terminal program to display font correctly |
FORCE_COLOR | optional | chalk | Used to force color output by the subprocess |
Press
?to see a list of keybindings. Use arrow keys to change the layout.
You may want to add an npm script to to your
package.jsonto launch your app using nodejs-dashboard using one of the options above. Example:
"scripts": { "dev": "nodejs-dashboard -- node -r nodejs-dashboard index.js" }
If your app requires additional arguments you'll need to use the
--flag to separate them from
nodejs-dashboardoptions. For example:
nodejs-dashboard --port=8002 -- node -m=false --bar=true index.js
node
Most CLI interfaces provide a mechanism for launching other tools. If you're looking to use something like nodemon or babel checkout the exec options provided by the CLI.
% nodemon --exec "nodejs-dashboard babel-node" src/index.js
nodejs-dashboardcan run inside a container if that container has a TTY allocated to it. The Docker documentation shows how to run a container with an interactive terminal session. Additional the Docker Compose documentation indicates that
docker-compose rundefaults to allocating a TTY and
docker-compose updefaults to not allocating one.
Usage:
nodejs-dashboard [options] -- [node] [script] [arguments]
Options: -h, --help output usage information -e, --eventdelay [ms] Minimum threshold for event loop reporting, default 10ms -l, --layouts [file] Path to file or npm module with layouts -p, --port [port] Socket listener port -r, --refreshinterval [ms] Metrics refresh interval, default 1000ms -s, --settings [settings] Overrides layout settings for given view types -V, --version output the version number
--eventdelay
This tunes the minimum threshold for reporting event loop delays. The default value is
10ms. Any delay below this value will be reported at
0.
--layouts
Optionally supply a custom layout configuration (for details, see Customizing Layouts). Default:
lib/default-layout-config.js
--port
Under the hood the dashboard utilizes SocketIO with a default port of
9838. If this conflicts with an existing service you can optionally change this value.
--refreshinterval
Specifies the interval in milliseconds that the metrics should be refreshed. The default is 1000 ms (1 second).
--settings
Overrides default or layout settings for views. Option value
settingsshould have a format
=,.... For example
--settings log.scrollback=100will override
scrollbacksetting for any view of
logtype (nested paths can be used if needed). For details about layouts, see Customizing Layouts).