首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails应用程序中将Faraday请求体添加到Datadog跟踪中

如何在Rails应用程序中将Faraday请求体添加到Datadog跟踪中
EN

Stack Overflow用户
提问于 2021-12-15 12:07:58
回答 1查看 1.2K关注 0票数 3

我试图使用Datadog在Rails应用程序中配置Faraday跟踪。

我已经建立了Faraday -> Datadog连接:

代码语言:javascript
复制
require 'faraday'
require 'ddtrace'

Datadog.configure do |c|
  c.use :faraday
end

Faraday.post("http://httpstat.us/200", {foo: 1, bar: 2}.to_json)
Faraday.get("http://httpstat.us/201?foo=1&bar=2")

它运行良好,请求被记录到Datadog。

但是这些日志不包含任何请求参数,但是GET或POST。

对于如何获得记录到Datadog的请求参数/正文,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-15 18:59:33

因此,在默认情况下,从Faraday发送到Datadog的HTTP请求作为span的一部分的唯一内容是:

代码语言:javascript
复制
      span.set_tag(Datadog::Ext::HTTP::URL, env[:url].path)
      span.set_tag(Datadog::Ext::HTTP::METHOD, env[:method].to_s.upcase)
      span.set_tag(Datadog::Ext::NET::TARGET_HOST, env[:url].host)
      span.set_tag(Datadog::Ext::NET::TARGET_PORT, env[:url].port)

来源:https://github.com/DataDog/dd-trace-rb/blob/e391d2eb64d3c6151a4bdd2710c6a8c7c1d57457/lib/ddtrace/contrib/faraday/middleware.rb#L54

默认情况下,请求的主体不在span的http部分中设置,只有URL、HTTP方法、主机和端口是。

但是,使用手动仪表,您可以向span添加任何您想要的内容,这样您就可以为Faraday中间件编写一个扩展或猴子补丁,将主体和参数添加到span中:

代码语言:javascript
复制
span.set_tag("http.body", env[:body])
span.set_tag("http.params", env[:params])

猴子贴片示例:

代码语言:javascript
复制
require 'faraday'
require 'ddtrace'
require 'ddtrace/contrib/faraday/middleware'

module FaradayExtension
  private
  def annotate!(span, env, options)
    # monkey patch to add body to span
    span.set_tag("http.body", env[:body]) unless env[:body].to_s.strip.empty?
    span.set_tag("http.query", env[:url].query) if env[:url].query
    super
  end
end

Datadog::Contrib::Faraday::Middleware.prepend(FaradayExtension)

Datadog.configure do |c|
  c.use :faraday
end

Faraday.post("http://httpstat.us/200", {foo: 1, bar: 2}.to_json)
Faraday.get("http://httpstat.us/201?foo=1&bar=2")

这在我的测试中起了作用:

注:我是Datadog的员工,但不是在工程团队,只是想要透明!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70363446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档