Promitheus数据源

### 数据源配置方法 #

驱动: prometheus 连接地址: http://ip:9090

### 查询方法 #

输入常规查询命令即可 返回值为prometheus标准json, 你需要在图形编辑器中使用js处理数据

    let dataset=__dataset__;
    //获取返回值列表中的第一值
    dataset = dataset.data.result[0].value;
    print(dataset)

### 处理数据样列 #

如获得的数据

    {
    "status":"success",
    "data":{
       "resultType":"vector",
       "result":[
            {"metric":{"__name__":"starrocks_fe_routine_load_jobs","group":"fe","instance":"xxx:8030","job":"StarRocks_Cluster01","state":"CANCELLED"},
              "value":[1671188429.573,"0"]
            },
            {"metric":{"__name__":"starrocks_fe_routine_load_jobs","group":"fe","instance":"xxx:8030","job":"StarRocks_Cluster01","state":"NEED_SCHEDULE"},
             "value":[1671188429.573,"2"]}
            ...
           ]
        }
    }

图形中处理成smartchart标准格式

    //处理prometheus
    let df = __dataset__;
    let result = df.data.result;
    let dataset = [['instance','state','qty']]; //二维表头
    for(let item of result){
        let pmetric = item.metric;
        let pvalue = item.value;
        dataset.push([pmetric.instance,pmetric.state,pvalue[1]]);
    }
    dataset = ds_pivot(dataset); //列转行

如果带时序的, 数据处理参考

    let df = __dataset__;
    let result = df.data.result;
    let dataset = [['instance','seq','qty']]; //二维表头
    for(let item of result){
        let pmetric = item.metric;
        let pvalues = item.values;
        let startv = pvalues[0][1]; //初始值
        for(let i=1; i<pvalues.length; i++){
            let pvalue = pvalues[i];
            dataset.push([i,pmetric.instance,pvalue[1]-startv]); //计算增长值
        }
    }
    dataset = ds_pivot(dataset); //列转行

你可能会用上的时间戳转文本格式

    function getLocalTime(nS) {
     return new Date(nS * 1000).toLocaleString();
    }

### 支持多段查询 #

使用分号(;)分隔查询