gpt4 book ai didi

newrelic - newrelic_rpm 如何向New Relic 服务器发送数据?

转载 作者:行者123 更新时间:2023-12-01 12:58:47 29 4
gpt4 key购买 nike

我们在生产环境中使用 newrelic_rpm。

我将日志级别更改为调试。
每当代理向服务器发送数据时,它会显示:

[11/08/11 13:58:09 +0530 mubarocks.local (788)] DEBUG : Sending data to New Relic Service
[11/08/11 13:58:09 +0530 mubarocks.local (788)] DEBUG : Spool file empty.
[11/08/11 13:58:09 +0530 mubarocks.local (788)] DEBUG : Connect to newrelic.com:80/agent_listener/8/.../metric_data?run_id=327878253
[11/08/11 13:58:09 +0530 mubarocks.local (788)] DEBUG : Http Connection opened to 204.93.223.142:80
[11/08/11 13:58:10 +0530 mubarocks.local (788)] DEBUG : Uncompressed content returned
[11/08/11 13:58:10 +0530 mubarocks.local (788)] DEBUG : 2011-11-08 13:58:09 +0530: sent 8 timeslices (327878253) in 0.660168 seconds

它不显示正在发送的实际数据。

如何记录发送到服务器的实际数据?

如何调试数据格式?

最佳答案

追踪调用栈,需要查看gem的来源。

 lib/new_relic/agent/agent.rb

数据实际上是由 Net::HTTP::Post 发送的
 def send_request(opts)
request = Net::HTTP::Post.new(opts[:uri],
'CONTENT-ENCODING' => opts[:encoding],
'HOST' => opts[:collector].name)
request.content_type = "application/octet-stream"
request.body = opts[:data]

log.debug "Connect to #{opts[:collector]}#{opts[:uri]}"

...

但是,当数据到达这里时,它已被压缩。
def invoke_remote(method, *args)
#determines whether to zip the data or send plain
post_data, encoding = compress_data(args)

response = send_request({
:uri => remote_method_uri(method),
:encoding => encoding,
:collector => collector,
:data => post_data})

...

所以 compress_data是个好地方。

因此,让我们添加一个初始化程序,在发送数据时添加日志语句。
module NewRelic
module Agent
class Agent
def compress_data_with_debug(object)
Rails.logger.debug("Newrelic Data: #{object.inspect}")

compress_data_without_debug(object)
end

alias_method_chain :compress_data, :debug
end
end
end

这应该让你有一个体面的开始。

关于newrelic - newrelic_rpm 如何向New Relic 服务器发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047723/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com