Skip to content

The NodeJS agent for Apache SkyWalking, an alternative to Skywalking-Nodejs, is a fork of Skywalking-Nodejs and is based on Opentelemetry-js instrumentations

License

Notifications You must be signed in to change notification settings

chzhuo/skywalking-agent-node

Repository files navigation

SkyWalking NodeJS Agent

Sky Walking logo

SkyWalking-Agent-Node: The NodeJS Agent for Apache SkyWalking, an alternative to skywalking-nodejs, which provides the native tracing abilities for NodeJS backend project. This project is a fork of skywalking-nodejs and is based on opentelemetry-js instrumentations

SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.

Quick start

Install Dependencies

npm install --save skywalking-agent-node

Instantiate Agent

// agent.js

"use strict";
const agent = require("skywalking-agent-node");

agent.start({
  //configurations
});

Run Your Application

node -r ./agent.js app.js

This will use default configurations to start the SkyWalking agent above, if you want to specify your own configurations, here are two methods.

1. Pass configuration values to agent.start method

Install Opentelemetry Instrumentations

npm install --save @opentelemetry/auto-instrumentations-node
npm install --save @opentelemetry/instrumentation-mysql2

Note: auto-instrumentations-node is a meta package from opentelemetry-js-contrib that provides a simple way to initialize multiple Node.js instrumentations.

// agent.js

"use strict";
const agent = require("skywalking-agent-node");
const { getNodeAutoInstrumentations } = require(
  "@opentelemetry/auto-instrumentations-node",
);
const { MySQL2Instrumentation } = require(
  "@opentelemetry/instrumentation-mysql2",
);
const instrumentations = getNodeAutoInstrumentations();
instrumentations.push(new MySQL2Instrumentation());

agent.start({
  serviceName: "my-service-name",
  serviceInstance: "my-service-instance-name",
  collectorAddress: "my.collector.address:port",
  instrumentations: instrumentations, // custom instrumentations if you needed
});

2. 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_SECURE Whether to use secure connection to backend OAP server false
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_COLD_ENDPOINT Cold start detection is as follows: First span to run within 1 second of skywalking init is considered a cold start. This span gets the tag coldStart set to 'true'. This span also optionally gets the text '<cold>' appended to the endpoint name if SW_COLD_ENDPOINT is set to 'true'. false
SW_AGENT_MAX_BUFFER_SIZE The maximum buffer size before sending the segment data to backend '1000'

About

The NodeJS agent for Apache SkyWalking, an alternative to Skywalking-Nodejs, is a fork of Skywalking-Nodejs and is based on Opentelemetry-js instrumentations

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published