Mar*_*per 7 instrumentation apm node.js express datadog
我当前的设置涉及使用 Express.js 的 Node.js Web 应用程序。
我正在使用 DataDog 的 dd-tracer 来测量 Node.js 花费在特定方法调用上的时间,作为我的 APM 解决方案的一部分。
我想知道是否可以测量传入 HTTP 请求忙于将数据作为 HTTP 响应正文发送回客户端的时间部分。
尝试进行此类检测时是否存在任何陷阱或不准确之处?
有谁知道为什么默认情况下 APM 客户端库不测量这一点?
我想知道是否可以测量传入 HTTP 请求忙于将数据作为 HTTP 响应正文发送回客户端的时间部分。
您可以手动包装调用res.write以在请求跟踪中创建额外的范围。仅当请求中对该方法的调用不多时,我才会建议这样做,否则我会建议仅捕获一个指标。
或者,分析可能是一个选项,它可以为您提供更多有关调用中到底花费时间的信息res.write。
我寻找一种“全局”解决方案,可以将其集成到 Nest.js 应用程序中,而无需手动检测对 res.write 的每次调用。
如上所述,您可以res.write直接在每个请求的开头直接换行。使用跟踪器,可以这样实现:
res.write = tracer.wrap('http.write', res.write)
Run Code Online (Sandbox Code Playgroud)
这应该在任何其他中间件有机会写入数据之前完成。
中间件示例:
app.use((req, res) => {
res.write = tracer.wrap('http.write', res.write)
})
Run Code Online (Sandbox Code Playgroud)
尝试进行此类仪器操作时是否存在任何陷阱或不准确之处?
我想不出什么大事。
有谁知道为什么默认情况下 APM 客户端库不对此进行测量?
开箱即用的主要问题是,res.write如果调用太多,为每个调用创建一个跨度可能会很昂贵。如果您认为开箱即用的选项是有意义的,我们绝对可以考虑添加它。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |