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(); 
}

支持多段查询 #

使用分号(;)分隔查询 输入图片说明