Application Insights не может отслеживать запросы в промежуточном программном обеспечении узла - PullRequest
0 голосов
/ 09 мая 2019

Я использую Strapi (который построен поверх Koa) для моей CMS.Я добавил промежуточное программное обеспечение, которое запускается при каждом запросе к серверу.Это промежуточное ПО инициализирует appInsights.

Я могу получить журналы трассировки из приведенного ниже кода, но при жизни я не получаю никаких результатов запроса.Я использовал ключ для того же ресурса AppInsights в Nuxt SPA, который получает свои данные из этого бэкэнда Strapi, и для этого я могу видеть все сделанные запросы.Таким образом, ресурс должен быть настроен правильно.

Это код промежуточного программного обеспечения.Все сообщения трассировки и журналы консоли регистрируются как положено.

const appInsights = require('applicationinsights');
module.exports = () => {
  let isInit = false;
  return {
    initialize: function(cb) {
      strapi.app.use(async (ctx, next) => {
        if (!isInit) {
          appInsights.setup().start();
          appInsights.defaultClient.trackTrace({
            message: 'STRAPI: trace on init'
          });
          console.log('app insights setup');
          isInit = true;
        }
        await next();
        appInsights.defaultClient.trackNodeHttpRequest({
          request: ctx.request,
          response: ctx.response
        });
        appInsights.defaultClient.trackTrace({
          message: 'STRAPI: trace on all http calls'
        });
        console.log('track node http request');
      });
      cb();
    }
  };
};

1 Ответ

1 голос
/ 09 мая 2019

Вы должны поставить свой

appInsights.setup().start();
appInsights.defaultClient.trackTrace({
  message: 'STRAPI: trace on init'
});
console.log('app insights setup');

вне вашего strapi.app.use

module.exports = () => {
  return {
    initialize: function(cb) {
      appInsights.setup().start();

      appInsights.defaultClient.trackTrace({
        message: 'STRAPI: trace on init'
      });

      console.log('app insights setup');

      strapi.app.use(async (ctx, next) => {
        await next();

        appInsights.defaultClient.trackNodeHttpRequest({
          request: ctx.request,
          response: ctx.response
        });

        appInsights.defaultClient.trackTrace({
          message: 'STRAPI: trace on all http calls'
        });

        console.log('track node http request');
      });

      cb();
    }
  };
};

Таким образом, ваш start будет вызываться один раз при запуске сервера.

...