From 0d8e5ec77ca8339c0e4ceb9463f04fe33141cd47 Mon Sep 17 00:00:00 2001 From: ning1875 <907974064@qq.com> Date: Tue, 20 Jul 2021 16:15:06 +0800 Subject: [PATCH] =?UTF-8?q?=20prometheus=20range=5Fquery=20=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=88=B3=E5=92=8C=E5=88=86=E8=BE=A8=E7=8E=87=20(#738)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 1. notify.py 支持安装channel反射发送 2. 支持钉钉群发送 3. 生成告警模板信息 * 1. notify.py 支持安装channel反射发送 2. 支持钉钉群发送 3. 增加二开说明 * 1. notify.py 用户创建一个虚拟的用户保存上述im群 的机器人token信息 user的contacts map中 * 1. notify.py alerts目录改为原来的 * 1. notify.py dingtalk send continue匹配 * 1. push型告警支持多条件 任意一个触发就触发 * 1. prometheus查询接口 tag-keys tag-values支持 params为空的情况 * 1. prometheus查询接口 ident匹配全部改为精确匹配 2. tagKey 提示改为tag_key * 1. prometheus查询接口 支持instance_query 对外暴露 * 1. prometheus instance_query改名为instant-query 2. page group中去掉数据查询相关path * 1. prometheus range_query 时间戳改为秒级 2. 查询支持传入分辨率参数 --- backend/prome/query.go | 19 +++++++++++-------- vos/query.go | 1 + 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/backend/prome/query.go b/backend/prome/query.go index e658a020..2158e980 100644 --- a/backend/prome/query.go +++ b/backend/prome/query.go @@ -207,13 +207,15 @@ func (pd *PromeDataSource) QueryData(inputs vos.DataQueryParam) []*vos.DataQuery startT := tsToUtcTs(inputs.Start) endT := tsToUtcTs(inputs.End) - // TODO 前端传入分辨率还是后端计算,grafana和prometheus ui都是前端传入 - delta := (inputs.End - inputs.Start) / 3600 - if delta <= 0 { - delta = 1 + resolution := time.Second * time.Duration(inputs.Step) + if inputs.Step == 0 { + // step==0 说明要自己算 grafana和prometheus ui都是前端传入 + delta := (inputs.End - inputs.Start) / 3600 + if delta <= 0 { + delta = 1 + } + resolution = time.Second * time.Duration(delta*DEFAULT_STEP) } - resolution := time.Second * time.Duration(delta*DEFAULT_STEP) - q, err := pd.QueryEngine.NewRangeQuery(pd.Queryable, qlStrFinal, startT, endT, resolution) if err != nil { logger.Errorf("[prome_query_error][QueryData_error_may_be_parse_ql_error][args:%+v][err:%+v]", input, err) @@ -253,7 +255,8 @@ func (pd *PromeDataSource) QueryData(inputs vos.DataQueryParam) []*vos.DataQuery pNum := len(m.Points) for _, p := range m.Points { tmpP := &vos.Point{ - Timestamp: p.T, + // 毫秒时间时间戳转 秒时间戳 + Timestamp: p.T / 1e3, Value: vos.JsonFloat(p.V), } oneResp.Values = append(oneResp.Values, tmpP) @@ -266,7 +269,7 @@ func (pd *PromeDataSource) QueryData(inputs vos.DataQueryParam) []*vos.DataQuery } tagStr = strings.TrimRight(tagStr, ",") oneResp.Tags = tagStr - oneResp.Resolution = delta * DEFAULT_STEP + oneResp.Resolution = int64(resolution / time.Second) oneResp.PNum = pNum respD = append(respD, oneResp) diff --git a/vos/query.go b/vos/query.go index a211b722..16b97e87 100644 --- a/vos/query.go +++ b/vos/query.go @@ -31,6 +31,7 @@ type DataQueryParam struct { Limit int `json:"limit"` Start int64 `json:"start"` End int64 `json:"end"` + Step int64 `json:"step"` } type DataQueryInstantParam struct {