0

node.js、koa、koa-router を使用するアプリケーションがあります。アプリケーションに newrelic を追加したいのですが、koa をサポートしていません。

そこで、koa-newrelic ( https://github.com/AfterShip/koa-newrelic ) を利用しようとしましたが、それでも機能しません。

私はまだ/*すべてのトランザクションを取得します。

誰がこれについて経験がありますか?

4

1 に答える 1

1

私の同僚は、この問題の解決を手伝ってくれます。

解決策は以下です

1. ここでカスタム koa new relic を宣言します

//****************** 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.このようにメインの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
于 2016-09-28T04:16:41.237 に答える