簡體   English   中英

是否可以在不使用外部后端的情況下編寫grafana數據源插件?

[英]Is it possible to write a grafana datasource plugin without using a external backend?

我想寫一個grafana數據源插件,它不依賴於外部后端。

我已經基於simple-json數據源插件構建了我的插件: https//github.com/grafana/simple-json-datasource

我嘗試更改datasource.js中的查詢函數,如下所示:

原版的:

 query(options) {
    var query = this.buildQueryParameters(options);

    if (query.targets.length <= 0) {
      return this.q.when([]);
    }

    return this.backendSrv.datasourceRequest({
      url: this.url + '/query',
      data: query,
      method: 'POST',
      headers: { 'Content-Type': 'application/json' }
    });

我的查詢功能:

  query(options) {
      return [
      {
        "target":"upper_75",
        "datapoints":[
          [622,1450754160000],
          [365,1450754220000]
        ]
      },
      {
        "target":"upper_90",
        "datapoints":[
          [861,1450754160000],
          [767,1450754220000]
        ]
      }
    ];
  }

當我實現我的查詢功能並嘗試在graphana面板中顯示圖形時,我收到錯誤消息:

“undefined不是一個對象(評估'dataList.map')”

不要擔心數據格式我嘗試了一切,但似乎grafana期望一些不同的回報,但我無法弄清楚什么格式。

我追溯了原始實現返回並重復它的內容,但它不起作用。

我相信

this.backendSrv.datasourceRequest({
      url: this.url + '/query',
      data: query,
      method: 'POST',
      headers: { 'Content-Type': 'application/json' }
    });

應該返回類似http響應的內容,但為什么我不能手動返回?

在此先感謝您的幫助!

看起來它需要被包裝成一個承諾,不能直接返回。 他們使用角度$ q組件。 我讓它回歸:

return this.q(function(resolve, reject) {
    var result = {
      data : [
        {
          "target":"upper_75",
          "datapoints":[
            [622,1450754160000],
            [365,1450754220000]
          ]
        },
        {
          "target":"upper_90",
          "datapoints":[
            [861,1450754160000],
            [767,1450754220000]
          ]
        }
      ]
    }
    resolve(result)
});

您將通過構造函數中的依賴注入獲得$ q:

constructor(instanceSettings, $q, backendSrv) {
this.type = instanceSettings.type;
this.url = instanceSettings.url;
this.name = instanceSettings.name;
this.q = $q;
this.backendSrv = backendSrv;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM