3

次のコマンドは、期待どおりにメトリックを返します。

curl " http://graphite.metrics:8080/metrics/find?format=completer&query=server * .cache"

{"metrics": [
  {"is_leaf": "1", "path": "server1200.cache", "name": "cache"},
  {"is_leaf": "1", "path": "server1201.cache", "name": "cache"},
  {"is_leaf": "1", "path": "server1202.cache", "name": "cache"},
  {"is_leaf": "1", "path": "server1203.cache", "name": "cache"}, 
  {"is_leaf": "1", "path": "server1205.cache", "name": "cache"}
 ]
}

Cubism.jsを使用して同じクエリを実行すると、「メトリックが見つかりません」というメッセージが表示されます。

var context = cubism.context()
                    .serverDelay(60 * 1000) 
                    .step(60 * 1000)
                    .size(1440); 

var graphite = context.graphite("http://graphite.metrics:8080");  
graphite.find("metricXX*", function(error, results){
  alert(error);
});

Cubism.jsが内部で同じリクエストを実行した場合、なぜメトリックを見つけることができないのですか?

4

1 に答える 1

4

結局のところ、これはCubism.jsのバグではありませんでした。実際には、クロスサイトHTTPリクエストでした。

ChromeでWebDeveloperExtentionを有効にすると、次のメッセージに気づきました。

発信元はAccess-Control-Allow-Originで許可されていません

そして、Node.jsに以下のコードを追加することを修正しました:

var server = http.createServer(function (req, res) {

  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader("Access-Control-Allow-Headers", "X-Requested-With");

  proxy.proxyRequest(req, res);
});
于 2012-12-20T15:22:41.357 に答える