如何在node + koa app

时间:2016-08-11 03:20:54

标签: node.js newrelic koa koa-router

我有一个使用node.js,koa,koa-router的应用程序。 我想在我的应用程序中添加newrelic,但它不支持koa。

所以我尝试使用koa-newrelic(https://github.com/AfterShip/koa-newrelic),但它仍然不起作用。

我仍然可以获得/*所有交易。

谁有这方面的经验?

1 个答案:

答案 0 :(得分:1)

我的同事帮我解决了这个问题。

解决方案如下

1.declare custom koa new relic here

//****************** myKoaNewRelic.js *****************
'use strict'

module.exports = function monitor(router, newrelic) {
  return function* monitor(next) {
    const route = this.params[0]
    for (const layer of router.stack) {
      if (layer.path !== '(.*)') {
        const method = (layer.methods.indexOf('HEAD') !== -1) ? layer.methods[1] : layer.methods[0]
        if (route.match(layer.regexp) && method === this.request.method) {
          newrelic.setControllerName(layer.path, method)
        }
      }
    }
    yield next
  }
}

2.update main index.js喜欢这个

//****************** index.js *****************
'use strict'    

const newrelic = require('newrelic')
const koaNewrelic = require('./myKoaNewRelic')
const app = require('koa')()
const router = require('koa-router')()

router.use(koaNewrelic(router, newrelic))

// DO SOME STUFF