Google Cloud trace Пользовательская трассировка работает только несколько раз

Я активировал 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.

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

от: google-cloud-trace

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

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

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

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

1 ответ

Решение

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

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

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

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