我为 Grafana v2.1.2 创建了一个脚本仪表板,并希望将其添加到主页仪表板列表中,但是没有看到使用 GUI 仪表板设置的方法。
可能吗?如果是这样,是否有一些关于如何执行此操作的文档或示例?
这似乎是 grafana 的一个长期问题,不支持https://github.com/grafana/grafana/issues/4145中提到的
但幸运的是,有一种解决方法,如https://github.com/anryko/grafana-influx-dashboard/issues/54所述
您将必须创建一个新的 grafana 仪表板。在仪表板设置中,您应该将其重命名为“脚本仪表板”。然后添加一个“html”类型的“text”行。然后到该行的文本字段,您需要粘贴以下代码:
<meta http-equiv="refresh" content="1;url=/dashboard/script/getdash.js"> <script type="text/javascript">window.location.href = "/dashboard/script/getdash.js"</script>
完成此操作后,您将必须保存仪表板。而已。现在,您可以从 Grafana 主屏幕选择新创建的“脚本仪表板”,它会自动将您重定向到实际的 GetDash 仪表板。
在 Grafana 4 中,您在一行中添加一个文本面板并将模式从切换Markup
到HTML
,然后在上面插入片段。
此解决方案的缺点是此类仪表板不能在播放列表中使用(将重定向到播放列表的 url)。
请注意 URL(特别是如果您在 /grafana 路径下运行 grafana),因为无法从 Web UI 中删除此重定向仪表板,您需要为此使用API或(如上述问题中所述)
新建一个同名的。然后在保存操作时,它会让你覆盖旧的。
更新:Grafana 6 不再允许解决方法:(
对的,这是可能的。但是没有直接的方法来实现这个特性。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;
查看上述脚本仪表板之间的区别。