Giter VIP home page Giter VIP logo

koa-newrelic's Introduction

koa-newrelic

Koa middleware to allow Newrelic monitor Koa applications like Express. Supported features:

  • Name transactions according to router (Only support koa-router)
  • Group and name transactions for static resources according to file extensions
  • Traces for Koa middlewares
  • Traces ctx.render

koa 1.x

See koa-newrelic 1.x for koa 1.x support.

Installation

npm install koa-newrelic

API

const newrelic = require('newrelic');
const koaNewrelic = require('koa-newrelic')(newrelic, opts);
const Koa = require('koa');
const Router = require('koa-router');
const views = require('koa-views');

const app = new Koa();
const router = new Router;

router.get('/', async function (next) {...});

app
  .use(koaNewrelic);
  .use(views()) // use views middleware could help instrument ctx.render method
  .use(router.routes());

To record traces of middlewares, please initialize koa-newrelic before adding any middlewares to app or router

Options

  • middlewareTrace Boolean for if need traces for each middleware. Defaults to false
  • groupStaticResources Boolean for if need to group transactions by file extension. Defaults to false
  • staticExtensions Array of file extensions will be grouped if groupStaticResources is true. Defaults to ['svg','png','jpg','gif','css','js','html']
  • customTransactionName Function to customize transaction metrics name by method and route path. Defaults to (method, path) => 'Koajs/' + (path[0] === '/' ? path.slice(1) : path) + '#' + method
  • renderMethodName name of render method for the framework. Default to render

Examples

const koaNewrelic = require('koa-newrelic')(newrelic, {
  renderMethodName: 'render',
  middlewareTrace: true,
  groupStaticResources: true,
  staticExtensions: ['js', 'css'],
  customTransactionName: (method, path) => `Koajs/${path.slice(1)}#${method}`
});

router.get('/index', async function ctrA(ctx) {...});
router.post('/login', async function ctrB(ctx) {...});

app
	.use(koaNewrelic)
  .use(serve('/public'));
  .use(router.routes());

/*
  In Newrelic, you will find following transactions

    /index#GET
	  Middleware serve
	  Middleware dispatch
	  Middleware ctrA

	/login#POST
	  Middleware serve
	  Middleware dispatch
	  Middleware ctrB

	/*.js#GET
	  Middleware serve

	/*.css#GET
	  Middleware serve  
*/

Test

npm test

Known Issues

License

Copyright (c) 2017 AfterShip

Licensed under the MIT license.

koa-newrelic's People

Contributors

adam0x01 avatar aobo-y avatar avindra avatar chiulam avatar erinleonhard avatar hans-lizihan avatar teddychan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.