【问题标题】:Scripted Dashboard in Grafana with opentsdb as the sourceGrafana 中的脚本仪表板,以 opentsdb 作为源
【发布时间】:2015-09-04 06:54:54
【问题描述】:

我想创建一个脚本仪表板,它将一个 OpenTSDB 指标作为数据源。在 Grafana 网站上,我找不到任何示例。我希望我可以添加一些类似的行:

metric = 'my.metric.name'

进入 JavaScript 代码,然后我可以即时访问仪表板。

var rows = 1;
var seriesName = 'argName';

if(!_.isUndefined(ARGS.rows)) {
  rows = parseInt(ARGS.rows, 10);
}

if(!_.isUndefined(ARGS.name)) {
  seriesName = ARGS.name;
}

for (var i = 0; i < rows; i++) {

  dashboard.rows.push({
    title: 'Scripted Graph ' + i,
    height: '300px',
    panels: [
      {
        title: 'Events',
        type: 'graph',
        span: 12,
        fill: 1,
        linewidth: 2,
        targets: [
          {
            'target': "randomWalk('" + seriesName + "')"
          },
          {
            'target': "randomWalk('random walk2')"
          }
        ],
      }
    ]
  });

}

return dashboard;

【问题讨论】:

    标签: opentsdb grafana


    【解决方案1】:

    很抱歉回答我自己的问题。但我只是想通了,希望在这里发帖对某人有所帮助。

    脚本在这里。通过以下方式即时访问仪表板: http://grafana_ip:3000/dashboard/script/donkey.js?name=tsdbmetricname

    /* global _ */
    
    /*
     * Complex scripted dashboard
     * This script generates a dashboard object that Grafana can load. It also takes a number of user
     * supplied URL parameters (in the ARGS variable)
     *
     * Return a dashboard object, or a function
     *
     * For async scripts, return a function, this function must take a single callback function as argument,
     * call this callback function with the dashboard object (look at scripted_async.js for an example)
     */
    
    
    
    // accessible variables in this scope
    var window, document, ARGS, $, jQuery, moment, kbn;
    
    // Setup some variables
    var dashboard;
    
    // All url parameters are available via the ARGS object
    var ARGS;
    
    // Intialize a skeleton with nothing but a rows array and service object
    dashboard = {
      rows : [],
    };
    
    // Set a title
    dashboard.title = 'From Shrek';
    
    // Set default time
    // time can be overriden in the url using from/to parameters, but this is
    // handled automatically in grafana core during dashboard initialization
    dashboard.time = {
      from: "now-6h",
      to: "now"
    };
    
    var rows = 1;
    var metricName = 'argName';
    
    //if(!_.isUndefined(ARGS.rows)) {
    //  rows = parseInt(ARGS.rows, 10);
    //}
    
    if(!_.isUndefined(ARGS.name)) {
      metricName = ARGS.name;
    }
    
    for (var i = 0; i < rows; i++) {
    
      dashboard.rows.push({
        title: metricName,
        height: '300px',
        panels: [
          {
            title: metricName,
            type: 'graph',
            span: 12,
            fill: 1,
            linewidth: 2,
            targets: [
              {
                  "aggregator": "avg",
                  "downsampleAggregator": "avg",
                  "errors": {},
                  "metric":ARGS.name,
                  //"metric": "search-engine.relevance.latency.mean",
                  "tags": {
                    "host": "*"
                  }
              }
            ],
            tooltip: {
              shared: true
            }
          }
        ]
      });
    }
    
    
    return dashboard;
    

    【讨论】:

    • 点击答案左上角的复选框:)
    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 2019-07-13
    • 2017-06-03
    • 2021-03-09
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多