Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Nightingale
提交
45855199
N
Nightingale
项目概览
jobily
/
Nightingale
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
Nightingale
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
45855199
编写于
7月 06, 2021
作者:
Q
qinyening
提交者:
GitHub
7月 06, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: tag-keys tag-values query when params are empty (#722)
Co-authored-by:
ning1875
<
907974064@qq.com
>
上级
1f16bc9a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
54 addition
and
8 deletion
+54
-8
backend/prome/query.go
backend/prome/query.go
+21
-1
judge/handler.go
judge/handler.go
+29
-4
models/alert_rule.go
models/alert_rule.go
+4
-3
未找到文件。
backend/prome/query.go
浏览文件 @
45855199
...
...
@@ -387,8 +387,14 @@ func (pd *PromeDataSource) QueryTagKeys(recv vos.CommonTagQueryParam) *vos.TagKe
}
labelNamesSet
:=
make
(
map
[
string
]
struct
{})
for
_
,
x
:=
range
recv
.
Params
{
if
len
(
recv
.
Params
)
==
0
{
recv
.
Params
=
append
(
recv
.
Params
,
vos
.
TagPairQueryParamOne
{
Idents
:
[]
string
{},
Metric
:
""
,
})
}
for
_
,
x
:=
range
recv
.
Params
{
cj
:=
&
commonQueryObj
{
Idents
:
x
.
Idents
,
TagPairs
:
recv
.
TagPairs
,
...
...
@@ -444,6 +450,14 @@ func (pd *PromeDataSource) QueryTagKeys(recv vos.CommonTagQueryParam) *vos.TagKe
// 对应prometheus 中的 /api/v1/label/<label_name>/values
func
(
pd
*
PromeDataSource
)
QueryTagValues
(
recv
vos
.
CommonTagQueryParam
)
*
vos
.
TagValueQueryResp
{
labelValuesSet
:=
make
(
map
[
string
]
struct
{})
if
len
(
recv
.
Params
)
==
0
{
recv
.
Params
=
append
(
recv
.
Params
,
vos
.
TagPairQueryParamOne
{
Idents
:
[]
string
{},
Metric
:
""
,
})
}
for
_
,
x
:=
range
recv
.
Params
{
cj
:=
&
commonQueryObj
{
Idents
:
x
.
Idents
,
...
...
@@ -553,6 +567,12 @@ func (pd *PromeDataSource) QueryTagPairs(recv vos.CommonTagQueryParam) *vos.TagP
Idents
:
make
([]
string
,
0
),
}
tps
:=
make
(
map
[
string
]
struct
{})
if
len
(
recv
.
Params
)
==
0
{
recv
.
Params
=
append
(
recv
.
Params
,
vos
.
TagPairQueryParamOne
{
Idents
:
[]
string
{},
Metric
:
""
,
})
}
for
_
,
x
:=
range
recv
.
Params
{
cj
:=
&
commonQueryObj
{
Idents
:
x
.
Idents
,
...
...
judge/handler.go
浏览文件 @
45855199
...
...
@@ -265,7 +265,7 @@ func ToJudge(linkedList *SafeLinkedList, stra *models.AlertRule, val *vos.Metric
historyArr
=
append
(
historyArr
,
history
)
eventInfo
+=
info
}
}
else
{
//
与
条件
}
else
{
//
多个
条件
for
_
,
expr
:=
range
stra
.
PushExpr
.
Exps
{
respData
,
err
:=
GetData
(
stra
,
expr
,
val
,
now
)
...
...
@@ -291,7 +291,12 @@ func ToJudge(linkedList *SafeLinkedList, stra *models.AlertRule, val *vos.Metric
if
eventInfo
==
""
{
eventInfo
=
info
}
else
{
eventInfo
+=
fmt
.
Sprintf
(
" & %s"
,
info
)
if
stra
.
PushExpr
.
TogetherOrAny
==
0
{
eventInfo
+=
fmt
.
Sprintf
(
" & %s"
,
info
)
}
else
if
stra
.
PushExpr
.
TogetherOrAny
==
1
{
eventInfo
+=
fmt
.
Sprintf
(
" || %s"
,
info
)
}
}
}
...
...
@@ -419,8 +424,28 @@ func GetData(stra *models.AlertRule, exp models.Exp, firstItem *vos.MetricPoint,
// 虽然最近的数据确实产生了事件(产生事件很频繁),但是未必一定要发送,只有告警/恢复状态发生变化的时候才需发送
func
sendEventIfNeed
(
status
[]
bool
,
event
*
models
.
AlertEvent
,
stra
*
models
.
AlertRule
)
{
isTriggered
:=
true
for
_
,
s
:=
range
status
{
isTriggered
=
isTriggered
&&
s
if
stra
.
Type
==
0
{
// 只判断push型的
switch
stra
.
PushExpr
.
TogetherOrAny
{
case
0
:
// 全部触发
for
_
,
s
:=
range
status
{
isTriggered
=
isTriggered
&&
s
}
case
1
:
// 任意一个触发
isTriggered
=
false
for
_
,
s
:=
range
status
{
if
s
==
true
{
isTriggered
=
true
break
}
}
}
}
now
:=
time
.
Now
()
.
Unix
()
...
...
models/alert_rule.go
浏览文件 @
45855199
...
...
@@ -48,9 +48,10 @@ type AlertRule struct {
}
type
PushExpression
struct
{
TagFilters
[]
TagFilter
`json:"tags_filters"`
ResFilters
[]
ResFilter
`json:"res_filters"`
Exps
[]
Exp
`json:"trigger_conditions"`
TagFilters
[]
TagFilter
`json:"tags_filters"`
ResFilters
[]
ResFilter
`json:"res_filters"`
Exps
[]
Exp
`json:"trigger_conditions"`
TogetherOrAny
int
`json:"together_or_any"`
// 所有触发还是触发一条即可,=0所有 =1一条
}
type
PullExpression
struct
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录