Grafana - 如何在 Grafana 中显示从外部 api 返回的数据?

如何解决Grafana - 如何在 Grafana 中显示从外部 api 返回的数据?

我正在尝试创建一个从外部 API 获取数据然后在 Grafana 中显示插件。但它不起作用。该插件可以从 API 获取数据,但无法在仪表板上显示

我该如何解决问题?

像这样的java API。它从数据库搜索数据,然后返回给插件

public String getData(String start,String end,String type){
        ArrayList<PCRC> list = new ArrayList<>();
        JSONArray result = new JSONArray();
        try{
            JSONObject object = new JSONObject();
            object.put("recordtime",new Date());
            object.put("success",12);
            object.put("fail",0);
            object.put("total",12);
            result.add(object);

            object = new JSONObject();
            object.put("recordtime",24);
            object.put("fail",1);
            object.put("total",25);
            result.add(object);

            log.info("-------------success get data");
        }catch (Exception e){
            log.error(e.getMessage());
            e.printstacktrace();
        }finally {
            return result.toJSONString();
        }
    }

这样的 Grafana 插件 它从前端获取搜索参数,然后从Java API 请求数据。 它可以获取返回值。但它不显示它。不知道怎么回事。

async doRequest(url: string,param: string,query: MyQuery){
    console.log(22);
    var resultUrl = this.hostUrl + url;

    const result = await getBackendSrv().datasourceRequest({
      method: "GET",url: resultUrl,params: {
        start: '2020-08-02 00:00:00',end: '2020-12-28 12:00:00',type: 'GET'
      }
    })
    return result;
  }

  async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
    const { range } = options;
    const from = dateTimeAsMoment(range!.from.valueOf()).format('YYYY-MM-DD HH:mm:ss');
    const to = dateTimeAsMoment(range!.to.valueOf()).format('YYYY-MM-DD HH:mm:ss');

    // Return a constant for each query.
    const promise = options.targets.map(target => {

      const query = defaults(target,defaultQuery);
      const frame = new MutableDataFrame({
        refId: query.refId,fields: [
          { name: 'Time',type: FieldType.time },{ name: 'value',type: FieldType.number },],});

      const param = "?start=" + from + "&end=" + to + "&type=" + this.fileType;
      this.doRequest(this.dataUrl,param,query).then((response) => {
      
        console.log(response);
        if (response.data.length > 0){
          response.data.forEach((item: any) =>{

            var time = dateTimeAsMoment(item.recordtime).format('YYYY-MM-DD HH:mm:ss')
            frame.appendRow([time,item.success]);
            console.log(frame);
          })
        }

        return frame;
      })

    });

    return Promise.all(promise).then((data) => ({ data }));
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?