0

我正在使用石墨来获取统计数据,并希望为变量呈现一个justgage 仪表。Graphite 可以使用 json 输出值:

[{"target": "snmp.ssbSubstation.realEnergy.1", "datapoints": [[4511552439.0, 1417540920]]}]

或生的:

snmp.ssbSubstation.realEnergy.1,1417540860,1417540920,60|4511552439.0

这是返回的源代码的整行,具体取决于您指定的是 json 还是 raw。网址的格式如下http://<graphite server>/render?target=snmp.ssbSubstation.realEnergy.1&format=raw&from=-1min

无论哪种方式,我都想抓取4511552439.0并将其设置为仪表的值,并在 grafana 的 html 面板中呈现。有没有一种非常简单的方法可以做到这一点?

4

1 回答 1

0

您可以使用JSONP ajax 请求来执行此操作。请查看下面的示例(作为您的应用程序的起点)。

您也可以在此处找到与 jsFiddle 相同的演示。

也许数据访问可以做得更好。二维访问看起来有点奇怪,但它确实有效。

我使用 mocky.io 来模拟您的数据。

// data format [{"target": "snmp.ssbSubstation.realEnergy.1", "datapoints": [[4511552439.0, 1417540920]]}]

// http://www.mocky.io/v2/547df7d558eb49190856a759

(function ($) {
    var url = 'http://www.mocky.io/v2/547df7d558eb49190856a759'; // mocky.io demo source

    var jsonCallback = function (data) {
        var gauge = data[0].datapoints[0][0];
        console.log(gauge);
        
        $('#data').html(JSON.stringify(data, null, 2));
        $("</p>").text('value for gauge ' + gauge).appendTo('#data');
    };

    $.ajax({
        type: 'GET',
        url: url,
        contentType: "application/json",
        dataType: 'jsonp'
    }).done(jsonCallback)
    .fail(function (xhr) {
        alert("error" + xhr.responseText);
    });

})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id='data'></pre>

于 2014-12-02T17:44:17.997 回答