Package Exports
- epsagon-frameworks
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (epsagon-frameworks) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Epsagon Instrumentation for Node.js Frameworks
This package provides an instrumentation to Node.js code running on frameworks for collection of distributed tracing and performance monitoring.
Installation
From your project directory:
npm install --save epsagon-frameworksExpress application
If you're running express.js application on any non Lambda environment, you can still use Epsagon! Note: Only Express 4 and above is supported You can accomplish that with the following example:
const express = require('express');
const epsagon = require('epsagon-frameworks');
epsagon.init({
    token: 'my-secret-token',
    appName: 'my-app-name',
    metadataOnly: false,
});
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000)Hapi application
If you're running Hapi.js application on any non Lambda environment, you can still use Epsagon! Note: Only Hapi 17 and above is supported You can accomplish that with the following example:
const Hapi = require('hapi');
const epsagon = require('epsagon-frameworks');
epsagon.init({
    token: 'my-secret-token',
    appName: 'my-app-name',
    metadataOnly: false,
});
const init = async () => {
    const server = Hapi.server({
        port: 3000,
        host: 'localhost'
    });
    server.route({
        method: 'GET',
        path:'/',
        handler: (request, h) => {
            return 'Hello World!';
        }
    });
    await server.start();
    console.log('Server running on %ss', server.info.uri);
};
init();You can allow tracing for non-route requests by setting the Allow No Routes environment variable
EPSAGON_ALLOW_NO_ROUTE=TRUEKoa application
If you're running Koa.js application on any non Lambda environment, you can still use Epsagon! You can accomplish that with the following example:
const Koa = require('koa');
const epsagon = require('epsagon-frameworks');
epsagon.init({
    token: 'my-secret-token',
    appName: 'my-app-name',
    metadataOnly: false,
});
const app = new Koa();
app.use(async ctx => {
  ctx.body = 'Hello World';
  // Example label usage
  ctx.epsagon.label('myFirstLabel', 'customValue1');
});
app.listen(3000)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!')
}Ignoring endpoints
You can ignore certain requests by specifying endpoints:
epsagon.ignoreEndpoints(['/healthcheck'])Copyright
Provided under the MIT license. See LICENSE for details.
Copyright 2019, Epsagon