SkyWalking-NodeJS: The NodeJS Agent for Apache SkyWalking, which provides the native tracing abilities for NodeJS backend project.
SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.
$ npm install --save skywalking-backend-js
SkyWalking NodeJS SDK requires SkyWalking backend (OAP) 8.0+ and NodeJS >= 10.
import agent from 'skywalking-backend-js';
agent.start();
This will use default configurations to start the SkyWalking agent above, if you want to specify your own configurations, here are two methods.
- Pass those values to
agent.start
method, such as:
agent.start({
serviceName: 'my-service-name',
serviceInstance: 'my-service-instance-name',
collectorAddress: 'my.collector.address:port',
});
note that all options given (including empty/null values) will override the corresponding default values, e.g. agent.start({ collectorAddress: '' })
will override the default value of collectorAddress
to empty string, causing errors like DNS resolution failed
.
- Use environment variables.
The supported environment variables are as follows:
Environment Variable | Description | Default |
---|---|---|
SW_AGENT_NAME |
The name of the service | your-nodejs-service |
SW_AGENT_INSTANCE |
The name of the service instance | Randomly generated |
SW_AGENT_COLLECTOR_BACKEND_SERVICES |
The backend OAP server address | 127.0.0.1:11800 |
SW_AGENT_AUTHENTICATION |
The authentication token to verify that the agent is trusted by the backend OAP, as for how to configure the backend, refer to the yaml. | not set |
SW_AGENT_LOGGING_LEVEL |
The logging level, could be one of error , warn , info , debug |
info |
SW_AGENT_DISABLE_PLUGINS |
Comma-delimited list of plugins to disable in the plugins directory (e.g. "mysql", "express"). | `` |
SW_IGNORE_SUFFIX |
The suffices of endpoints that will be ignored (not traced), comma separated | .jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg |
SW_TRACE_IGNORE_PATH |
The paths of endpoints that will be ignored (not traced), comma separated | `` |
SW_SQL_TRACE_PARAMETERS |
If set to 'true' then SQL query parameters will be included | false |
SW_SQL_PARAMETERS_MAX_LENGTH |
The maximum string length of SQL parameters to log | 512 |
SW_MONGO_TRACE_PARAMETERS |
If set to 'true' then mongodb query parameters will be included | false |
SW_MONGO_PARAMETERS_MAX_LENGTH |
The maximum string length of mongodb parameters to log | 512 |
SW_AGENT_MAX_BUFFER_SIZE |
The maximum buffer size before sending the segment data to backend | '1000' |
There are some built-in plugins that support automatic instrumentation of NodeJS libraries, the complete lists are as follows:
Library | Plugin Name |
---|---|
built-in http and https module |
http / https |
Express |
express |
Axios |
axios |
MySQL |
mysql |
PostgreSQL |
pg |
pg-cursor |
pg-cursor |
MongoDB |
mongodb |
Mongoose |
mongoose |
RabbitMQ |
amqplib |
The following are packages that have been tested to some extent and are compatible because they work through the instrumentation of an underlying package:
Library | Underlying Plugin Name |
---|---|
request |
http / https |
request-promise |
http / https |
koa |
http / https |
- Submit an issue by using [Nodejs] as title prefix.
- Mail list: dev@skywalking.apache.org. Mail to
dev-subscribe@skywalking.apache.org
, follow the reply to subscribe the mail list. - Join
skywalking
channel at Apache Slack. If the link is not working, find the latest one at Apache INFRA WIKI. - Twitter, ASFSkyWalking
Apache 2.0