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, но я не нашел способа получить контекст.
Корневой диапазон автоматически запускается при получении входящего запроса (другими словами, все промежуточное программное обеспечение уже выполняется в пределах корневого диапазона).
Обновите базу на комментарии @ kjin:
внутри контроллера в экспрессе вам нужно только
tracer.createChildSpan({name: 'name'})
1 ответ
Если вы включили автоматическую трассировку, а также сгенерировали корневые диапазоны в приемнике запросов с использованием пользовательского API-интерфейса, тогда корневой диапазон будет игнорироваться, поскольку он был создан в существующем корневом диапазоне (который был автоматически запущен для этого запроса), Это мое предположение, основанное на представленном здесь коде, но вы должны быть в состоянии выполнить то, что вы хотите, вместо этого создав дочерний промежуток. (Пользовательские корневые диапазоны предназначены для работы, выполняемой вне жизненного цикла запроса, например для периодической работы.)
Re: Контекст промежуточного программного обеспечения Express.js - я не совсем уверен, что вы имеете в виду здесь, но агент трассировки не хранит ни одного аргумента слушателя запроса в контексте трассировки.
Как дополнительное примечание - вы получите более быстрое время отклика, если сообщите о проблеме непосредственно в репозиторий GitHub, с которым вы связались.
Надеюсь это поможет!