trieloff / epsagon-node

Instrumentation library for Node.js 6.10, 8.10 and 10.x ⚡️

Home Page:https://epsagon.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Epsagon Instrumentation for Node.js

Build Status npm version semantic-release

This package provides an instrumentation to Node.js code running on functions for collection of distributed tracing and performance monitoring.

Installation

From your project directory:

npm install --save epsagon

Getting started (AWS Lambda)

Simply use the wrapper to send traces from your code:

const epsagon = require('epsagon');
epsagon.init({
    token: 'my-secret-token',
    appName: 'my-app-name',
    metadataOnly: false, // Optional, send more trace data
});

function handler(event, context, callback) {
    callback(null, 'It worked!')
}

handler = epsagon.lambdaWrapper(handler)

Getting started (Apache OpenWhisk)

You should pass the Epsagon token to your action as a default parameter, so that you don't have to expose important credentials in your code. The name of the parameter can be configured using token_param, in this example we use EPSAGON_TOKEN

const epsagon = require('epsagon');

function main(params) {
    // your main function
}

module.exports.main = epsagon.openWhiskWrapper(main, {
    token_param: 'EPSAGON_TOKEN', // name of the action parameter to take the token from
    appName: 'my-app-name'
    metadataOnly: false // Optional, send more trace data
});

You can then pass the EPSAGON_TOKEN as a default parameter into your action using the wsk command line client:

$ wsk action update <myaction> --parameter EPSAGON_TOKEN <your-epsagon-token>

Custom labels

You can add custom labels to your traces. Filters can later be used for filtering traces that contains specific labels:

function handler(event, context, callback) {
    epsagon.label('myCustomLabel', 'labelValue');
    callback(null, 'It worked!')
}

Custom errors

You can set a trace as an error (although handled correctly) by catching an error:

function handler(event, context, callback) {
    try {
        // something bad happens
    } catch (err) {
        epsagon.setError(err);
    }

    callback(null, 'It worked!')
}

Or manually specify Error object:

function handler(event, context, callback) {
    epsagon.setError(Error('My custom error'));
    callback(null, 'It worked!')
}

Web frameworks

Support for Express, Hapi, and other frameworks is done through epsagon-frameworks

Copyright

Provided under the MIT license. See LICENSE for details.

Copyright 2019, Epsagon

About

Instrumentation library for Node.js 6.10, 8.10 and 10.x ⚡️

https://epsagon.com

License:MIT License


Languages

Language:JavaScript 99.0%Language:Shell 1.0%