Google Cloud trace Пользовательская трассировка работает только несколько раз - PullRequest
0 голосов
/ 25 октября 2018

Я активировал Google Cloud Tracer с nodejs & express, хорошо работает в автоматическом режиме, правильно регистрирует вызовы API.

Я пытаюсь создать трассировку вручную, чтобы узнать время выполнения промежуточных шагов.

controller (req, res) {

    tracer.runInRootSpan({ name: 'dnd-task' }, (rootSpan) => {

      //promise
      myPromise(rootSpan)
        .then((data) => {
          rootSpan.endSpan()
          res.ok(data)
        })
        .catch((err)=>{
          rootSpan.endSpan()
          res.send(err)
        })
    })

}

, но в Google Cloud Trace перечисляются только 1 или 2 вызова, а автоматически сгенерированные вызовы показывают тысячи вызовов API.

Я также прочитал документацию, чтобы попытаться получить контекст экспресса.js middleware, но я не нашел способа получить контекст.

from: google-cloud-trace

Корневой диапазон запускается автоматическипри получении входящего запроса (другими словами, все промежуточное программное обеспечение уже выполняется в пределах корневого диапазона).

Обновление базы на @ kjin комментарий:

внутриконтроллер в экспрессе вам нужен только

tracer.createChildSpan({name: 'name'})

1 Ответ

0 голосов
/ 05 ноября 2018

Если у вас включена автоматическая трассировка и также создает корневые диапазоны в приемнике запросов с использованием API настраиваемого диапазона, тогда корневой диапазон будет игнорироваться, поскольку он был создан в ранее существующем корневом диапазоне (тот, который был автоматически запущен для этого запроса).Это мое предположение, основанное на представленном здесь коде, но вы должны быть в состоянии выполнить то, что вы хотите, вместо этого создав дочерний промежуток.(Пользовательские корневые диапазоны предназначены для работы, выполняемой вне жизненного цикла запроса, например для периодической работы.)

Re: Express.js, контекст промежуточного программного обеспечения - я не совсем уверен, что вы имеете в виду, ноАгент трассировки не сохраняет ни одного аргумента прослушивателя запроса в контексте трассировки.

В качестве дополнительного примечания - вы получите более быстрое время отклика, если сообщите о проблеме непосредственно в репозиторий GitHub, в который высвязанный.

Надеюсь, это поможет!

...