J'utilise actuellement la bibliothèque Net :: HTTP de Ruby pour interroger un point de terminaison Newrelic. Récemment, ces requêtes ont commencé à renvoyer 404. J'ai testé ma requête exacte via curl - dans l'espoir d'obtenir peut-être un message d'erreur plus détaillé - mais la requête via curl renvoie en réalité un 200 avec les données attendues. Donc, la requête fonctionne, et je ne sais pas pourquoi Net :: HTTP retournerait un 404 à ce stade.Net :: HTTP à Newrelic renvoie 404, mais curl renvoie 200
Voici quelques extraits de code de ce que j'ai jusqu'à présent, et si quelqu'un peut offrir des suggestions d'autres choses à essayer, ce serait très apprécié!
Environnement:
- JRuby 07.01.26 (donc Ruby 1.9.3p551)
- Rails 3.2.21
Code 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
Cela me renvoie une erreur 404 code à chaque fois. Je l'ai essayé contre quelques points de terminaison/comptes Newrelic valides et chaque fois est une erreur 404.
Code CURL:
Maintenant, si je prends la même demande, et punt à se courber sur la ligne de commande, il n'y a aucun problème, je reçois un 200 avec toutes les données renvoyées correctement:
curl -H "X-Query-Key: NEWRELIC_QUERY_KEY" https://NEWRELIC_HOST/PATH/ACCOUNT_ID/query?NRQL_QUERY_STRING
cela fonctionne-t-il pour d'autres points de terminaison que newrelic? – philipp
Si vous avez accès aux journaux du serveur, la réponse peut être –
@philipp Oui, nous l'utilisons dans quelques endroits pour récupérer des données, et en fait nous utilisons Net :: HTTP pour récupérer d'autres formes de données de Newrelic et celles-là fonctionnent tous très bien - ils suivent tous le même format. – Krista