我目前使用Ruby的Net :: HTTP库来查询Newrelic端点。最近,这些查询已经开始返回404了。我通过curl测试了我的确切查询 - 希望能够得到更详细的错误消息 - 但通过curl查询实际上会返回200与预期数据。所以这个查询确实有效,并且我对Net :: HTTP为什么会在这时返回一个404有点不知所措。Net :: HTTP to Newrelic返回404,但curl返回200
以下是我到目前为止的一些代码片段,如果任何人都可以提供任何有关进一步尝试的建议,那将非常感谢!
环境:
- 的JRuby 1.7.26(因此Ruby 1.9.3p551)
- 滑轨3.2.21
Ruby代码:
uri = URI('https://NEWRELIC_HOST/PATH/ACCOUNT_ID/query')
parameters = { :nrql => NRQL_QUERY_STRING }
uri.query = URI.encode_www_form(parameters)
request = Net::HTTP::Get.new(uri.to_s)
request['X-Query-Key'] = NEWRELIC_QUERY_KEY
Net::HTTP.start(uri.hostname, uri.port, {:use_ssl => true}) do |http|
response = http.request(request)
end
这会返回404错误代码每次。我已经尝试了一对有效的Newrelic端点/帐户,每次都是404错误。
卷曲代码:
现在,如果我采取相同的请求,并踢它卷曲在命令行上,没有任何问题,我得到的所有数据的200正确返回:
curl -H "X-Query-Key: NEWRELIC_QUERY_KEY" https://NEWRELIC_HOST/PATH/ACCOUNT_ID/query?NRQL_QUERY_STRING
它是否适用于其他终端而不是newrelic? – philipp
如果你有权访问服务器日志,答案可能在 –
@ philipp是的,我们在一些地方使用它来检索数据,实际上我们使用Net :: HTTP从Newrelic检索其他形式的数据,都工作正常 - 他们都遵循相同的格式。 – Krista