Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sematext/spm-agent-nodejs
NodeJS Monitoring Agent
https://github.com/sematext/spm-agent-nodejs
agent apm developer-tools devops javascript monitoring nodejs performance-metrics performance-monitoring tracing
Last synced: about 1 month ago
JSON representation
NodeJS Monitoring Agent
- Host: GitHub
- URL: https://github.com/sematext/spm-agent-nodejs
- Owner: sematext
- License: apache-2.0
- Created: 2015-02-26T23:12:47.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2023-10-17T05:15:38.000Z (about 1 year ago)
- Last Synced: 2024-11-10T18:49:25.905Z (about 1 month ago)
- Topics: agent, apm, developer-tools, devops, javascript, monitoring, nodejs, performance-metrics, performance-monitoring, tracing
- Language: JavaScript
- Homepage: https://sematext.com/integrations/nodejs-monitoring
- Size: 1.08 MB
- Stars: 60
- Watchers: 18
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
spm-agent-nodejs
================![npm-stats](https://nodei.co/npm/spm-agent-nodejs.png?downloads=true&downloadRank=true)
This is the [Node.js monitoring](https://sematext.com/integrations/nodejs-monitoring) agent for [Sematext Cloud](https://sematext.com/cloud).
The following information is collected and transmitted to Sematext:
- OS Metrics (CPU / Mem)
- Process Memory
- EventLoop stats
- Garbage Collector stats
- Web server stats (requests, error rate, response times etc.)
Working for all web servers frameworks that use Node.js http/https module including
- "connect" based frameworks
- Express.js,
- Sails.js
- Hapi.js
- Restify
- and others ...The module is able to run in cluster mode (master/worker).
# Status
Supported Node-Versions: Node >= 6.x.
Please check our [blog](https://sematext.com/tag/node-js/) for more information or contact us at [[email protected]](mailto:[email protected]).
# Installation
- [How to Add Performance Monitoring to Node.js Applications](https://sematext.com/blog/adding-monitoring-to-node-js-and-io-js-apps/)
```
npm install spm-agent-nodejs
```
Get a free account and create a Node.js API token at [sematext.com/spm](https://apps.sematext.com/ui/registration)
# Configuration
We use https://www.npmjs.com/package/rc for configuration. This means config parameters can be passed via several config
locations command-line args or ENV variables. We recommend to use a file in current directory in INI or JSON format called ".spmagentrc".
This file can be generated by calling a helper script:export MONITORING_TOKEN=YOUR-NODEJS-MONITORING-TOKEN
export INFRA_TOKEN=YOUR-INFRA-MONITORING-TOKEN
node ./node_modules/spm-agent-nodejs/bin/spmconfig.jsThe command above generates following default configuration file (YAML format):
# Directory for buffered metrics
dbDir: ./spmdb# Application Token for SPM
tokens:
monitoring: YOUR-NODEJS-MONITORING-TOKEN
infra: YOUR-INFRA-MONITORING-TOKENlogger
# log file directory default is ./spmlogs
dir: ./spmlogs
# silent = true means no creation of log files
silent: false
# log level for output - debug, info, error, defaults to error to be quiet
level: errorThe only required setting is the Sematext App Token, this could be set via config file ".spmagentrc" or environment variable:
export spmagent_tokens__monitoring=YOUR-NODEJS-MONITORING-TOKEN
Please note the use of double "_" for nested properties
## Configuration via Environment Variables
export MONITORING_TOKEN=YOUR-NODEJS-MONITORING-TOKEN
export INFRA_TOKEN=YOUR-INFRA-MONITORING-TOKEN
# default is SaaS at sematext.com, URL needs to be changed for on-prem to the local SPM receiver
export SPM_RECEIVER_URL=https://local-spm-server:8084/_bulk
export EVENTS_RECEIVER_URL=https://local-event-receiver/
export SPM_DB_DIR=/tmp
export SPM_LOG_DIRECTORY=./logs
export SPM_LOG_LEVEL=error
export SPM_LOG_TO_CONSOLE=true
export HTTPS_PROXY=http://my-local-proxy-server## Changing API endpoints for Sematext Cloud EU
```
export SPM_RECEIVER_URL=https://spm-receiver.eu.sematext.com/receiver/v1
export EVENTS_RECEIVER_URL=https://event-receiver.eu.sematext.com
```# Tags
To configure tags to send along with metrics please see [spm-agent README](https://github.com/sematext/spm-agent/blob/master/README.md).
# Usage
## Method 1: Preloading spm-agent-nodejs - no source code modifications requred
The command line option "-r" preloads node modules before the actual application is started. In this case the original source code needs no modification:
```sh
node -r './spm-agent-nodejs' yourApp.js
```## Method 2: Add spm-agent-nodejs to your source code
Add this line at the begin of your source code / main script / app.js```
# add spm-agent-nodejs to your project
npm i spm-agent-nodejs --save
``````js
require('spm-agent-nodejs')
```## With PM2
Use the absolute path to your `.env` file to enable PM2 monitoring.```js
// load env vars if you're using dotenv
require('dotenv').config({ path: '/absolute/path/to/your/project/.env' })
// start agent
require('spm-agent-nodejs')
``````bash
pm2 start app.js -i max
```# Results
- _[Top Node.js Metrics to Watch](https://blog.sematext.com/top-nodejs-metrics-to-watch/)
![SPM for Node.js screenshot](https://sematext.com/wp-content/uploads/2019/04/sematext-nodejs-metrics.png)_# Troubleshooting
Please visit our [documentation](https://sematext.com/docs/integration/node.js/) for more information.
# Other monitoring packages
Please check out [spm-metrics-js](https://www.npmjs.com/package/spm-metrics-js) to monitor any custom metric in your application.
[Sematext Docker Agent](https://hub.docker.com/r/sematext/agent/) (see also: https://sematext.com/docker and https://sematext.com/kubernetes)
# LICENSE
Apache 2 - see [LICENSE](https://github.com/sematext/spm-agent-nodejs/blob/master/LICENSE) file.