我目前使用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