是否可以将脚本仪表板添加到Home" Dashboards"清单?

时间:2015-08-27 17:08:21

标签: scripting dashboard grafana

我已经为Grafana v2.1.2创建了一个脚本化的信息中心,并希望将其添加到主页信息中心列表中,但是无法使用GUI的信息中心设置查看方法

有可能吗?如果是这样,是否有一些文档或示例如何执行此操作?

2 个答案:

答案 0 :(得分:2)

这似乎是grafana的一个长期问题,并且不像https://github.com/grafana/grafana/issues/4145

中提到的那样受到支持

但幸运的是,有https://github.com/anryko/grafana-influx-dashboard/issues/54

所述的解决方法
  

您必须创建一个新的grafana仪表板。在仪表板设置中,您应将其重命名为" Scripted Dashboard"。然后添加一个"文本"一行" html"类型。然后到该行的文本字段,您需要粘贴此代码:

<meta http-equiv="refresh" content="1;url=/dashboard/script/getdash.js">
<script type="text/javascript">window.location.href = "/dashboard/script/getdash.js"</script>
     

完成此操作后,您必须保存仪表板。就是这样。现在,从您的Grafana主屏幕,您可以选择新创建的&#34; Scripted Dashboard&#34;它会自动将您重定向到实际的GetDash仪表板。

在当前版本的Grafana 4中,您可以在一行中添加一个文本面板并从Markup添加到HTML,然后在上面插入代码段。

此解决方案的缺点是此类信息中心无法在播放列表中使用(将从播放列表的网址中重定向)。

请注意URL(特别是如果您在/ grafana路径下运行grafana),因为无法从网页用户界面删除此重定向信息中心,您需要使用API或(如上述问题所述)

  

创建一个具有相同名称的新名称。然后在保存操作时,它会让你覆盖旧的。

答案 1 :(得分:1)

是的,有可能。但是没有直接的方法来实现此功能。 Grafana允许仪表板API创建或更新仪表板。您需要修改默认脚本仪表板对象以适应此仪表板API以及脚本化仪表板。

以下是默认的脚本仪表板:

'use strict';
var window, document, ARGS, $, jQuery, moment, kbn;
var dashboard = {
  rows : [],
};
dashboard.title = 'Scripted Dashboard';
dashboard.time = {
  from: "now-6h",
  to: "now"
};

dashboard.rows.push({
    title: 'Chart',
    height: '300px',
    panels: [
      {
        title: 'Events',
        type: 'graph'
      }]
  });


return dashboard;

修改脚本以达到目的:

'use strict' ;
var window, document, ARGS, $, jQuery, moment, kbn;
var ScriptedDashboard= {
        dashboard :{},
        overwrite: true
};

/* Create a simple dashboard*/
function createDashboard(dashboard){
        dashboard.title = 'Grafana Dashboard';
        dashboard.time = {
                from : "now-6h",
                to : "now"
        };
        dashboard.id= null;
        dashboard.uid= null;
}

function sendHTTPData(method, url, data){
    var httpRequest = new XMLHttpRequest();
    httpRequest.open( method,url , true);
    httpRequest.setRequestHeader("Content-Type", "application/json");
    httpRequest.setRequestHeader("Access-Control-Allow-Origin","*");
    var reqData = JSON.stringify(data);
    httpRequest.send(reqData);
}

createDashboard(ScriptedDashboard.dashboard);
sendHTTPData("POST", "http://192.168.0.104:3000/api/dashboards/db", ScriptedDashboard);

return ScriptedDashboard.dashboard;

查看上述脚本之间的区别。