Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
nightingale
提交
d9b89f24
N
nightingale
项目概览
DiDi
/
nightingale
11 个月 前同步成功
通知
46
Star
7053
Fork
1161
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
nightingale
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d9b89f24
编写于
4月 23, 2020
作者:
7
710leo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: sort event tags & change extra
上级
322eb97a
变更
11
显示空白变更内容
内联
并排
Showing
11 changed file
with
75 addition
and
62 deletion
+75
-62
src/dataobj/event.go
src/dataobj/event.go
+20
-2
src/dataobj/judge.go
src/dataobj/judge.go
+0
-6
src/model/event.go
src/model/event.go
+1
-1
src/model/event_cur.go
src/model/event_cur.go
+1
-1
src/modules/judge/cache/index.go
src/modules/judge/cache/index.go
+1
-1
src/modules/judge/cache/linkedlist.go
src/modules/judge/cache/linkedlist.go
+13
-7
src/modules/judge/judge/func.go
src/modules/judge/judge/func.go
+14
-14
src/modules/judge/judge/judge.go
src/modules/judge/judge/judge.go
+11
-11
src/modules/judge/judge/nodata.go
src/modules/judge/judge/nodata.go
+3
-3
src/modules/monapi/cron/event_consumer.go
src/modules/monapi/cron/event_consumer.go
+2
-8
src/modules/monapi/http/routes/event.go
src/modules/monapi/http/routes/event.go
+9
-8
未找到文件。
src/dataobj/event.go
浏览文件 @
d9b89f24
...
...
@@ -20,6 +20,24 @@ type History struct {
Metric
string
`json:"metric"`
// 指标名
Tags
map
[
string
]
string
`json:"tags,omitempty"`
// endpoint/counter
Granularity
int
`json:"-"`
// alarm补齐数据时需要
Points
[]
*
RRDData
`json:"points"`
// 现场值
Points
[]
*
HistoryData
`json:"points"`
// 现场值
}
type
HistoryData
struct
{
Timestamp
int64
`json:"timestamp"`
Value
JsonFloat
`json:"value"`
Extra
string
`json:"extra"`
}
func
RRDData2HistoryData
(
datas
[]
*
RRDData
)
[]
*
HistoryData
{
historyDatas
:=
make
([]
*
HistoryData
,
len
(
datas
))
for
i
:=
range
datas
{
historyData
:=
&
HistoryData
{
Timestamp
:
datas
[
i
]
.
Timestamp
,
Value
:
datas
[
i
]
.
Value
,
}
historyDatas
[
i
]
=
historyData
}
return
historyDatas
}
src/dataobj/judge.go
浏览文件 @
d9b89f24
...
...
@@ -28,9 +28,3 @@ func (j *JudgeItem) PrimaryKey() string {
func
(
j
*
JudgeItem
)
MD5
()
string
{
return
gstr
.
MD5
(
str
.
PK
(
strconv
.
FormatInt
(
j
.
Sid
,
16
),
j
.
Endpoint
,
j
.
Metric
,
str
.
SortedTags
(
j
.
TagsMap
)))
}
//告警现场的值
type
HistoryData
struct
{
Timestamp
int64
`json:"timestamp"`
Value
float64
`json:"value"`
}
src/model/event.go
浏览文件 @
d9b89f24
...
...
@@ -39,12 +39,12 @@ type EventDetail struct {
Tags
map
[
string
]
string
`json:"tags"`
Points
[]
*
EventDetailPoint
`json:"points"`
PredPoints
[]
*
EventDetailPoint
`json:"pred_points,omitempty"`
// 预测值, 预测值不为空时, 现场值对应的是实际值
Extra
string
`json:"extra"`
}
type
EventDetailPoint
struct
{
Timestamp
int64
`json:"timestamp"`
Value
float64
`json:"value"`
Extra
string
`json:"extra"`
}
type
EventAlertUpgrade
struct
{
...
...
src/model/event_cur.go
浏览文件 @
d9b89f24
...
...
@@ -232,7 +232,7 @@ func EventCurGet(col string, value interface{}) (*EventCur, error) {
}
func
(
e
*
EventCur
)
EventIgnore
()
error
{
_
,
err
:=
DB
[
"mon"
]
.
Exec
(
"update event_cur set ignore_alert=1 where id=?"
,
e
.
Id
)
_
,
err
:=
DB
[
"mon"
]
.
Where
(
"id=?"
,
e
.
Id
)
.
Delete
(
new
(
EventCur
)
)
return
err
}
...
...
src/modules/judge/cache/index.go
浏览文件 @
d9b89f24
...
...
@@ -71,7 +71,7 @@ func (i *IndexMap) Clean() {
}
for
key
,
series
:=
range
index
{
if
now
-
series
.
TS
>
3
6
00
{
if
now
-
series
.
TS
>
300
{
delete
(
i
.
Data
[
id
],
key
)
}
}
...
...
src/modules/judge/cache/linkedlist.go
浏览文件 @
d9b89f24
...
...
@@ -54,22 +54,22 @@ func (ll *SafeLinkedList) PushFrontAndMaintain(v *dataobj.JudgeItem, maxCount in
// @param limit 至多返回这些,如果不够,有多少返回多少
// @return bool isEnough
func
(
ll
*
SafeLinkedList
)
HistoryData
(
limit
int
)
([]
*
dataobj
.
RRD
Data
,
bool
)
{
func
(
ll
*
SafeLinkedList
)
HistoryData
(
limit
int
)
([]
*
dataobj
.
History
Data
,
bool
)
{
if
limit
<
1
{
// 其实limit不合法,此处也返回false吧,上层代码要注意
// 因为false通常使上层代码进入异常分支,这样就统一了
return
[]
*
dataobj
.
RRD
Data
{},
false
return
[]
*
dataobj
.
History
Data
{},
false
}
size
:=
ll
.
Len
()
if
size
==
0
{
return
[]
*
dataobj
.
RRD
Data
{},
false
return
[]
*
dataobj
.
History
Data
{},
false
}
firstElement
:=
ll
.
Front
()
firstItem
:=
firstElement
.
Value
.
(
*
dataobj
.
JudgeItem
)
var
vs
[]
*
dataobj
.
RRD
Data
var
vs
[]
*
dataobj
.
History
Data
isEnough
:=
true
judgeType
:=
firstItem
.
DsType
[
0
]
...
...
@@ -79,15 +79,21 @@ func (ll *SafeLinkedList) HistoryData(limit int) ([]*dataobj.RRDData, bool) {
limit
=
size
isEnough
=
false
}
vs
=
make
([]
*
dataobj
.
RRDData
,
limit
)
vs
[
0
]
=
&
dataobj
.
RRDData
{
Timestamp
:
firstItem
.
Timestamp
,
Value
:
dataobj
.
JsonFloat
(
firstItem
.
Value
)}
vs
=
make
([]
*
dataobj
.
HistoryData
,
limit
)
vs
[
0
]
=
&
dataobj
.
HistoryData
{
Timestamp
:
firstItem
.
Timestamp
,
Value
:
dataobj
.
JsonFloat
(
firstItem
.
Value
),
Extra
:
firstItem
.
Extra
,
}
i
:=
1
currentElement
:=
firstElement
for
i
<
limit
{
nextElement
:=
currentElement
.
Next
()
vs
[
i
]
=
&
dataobj
.
RRD
Data
{
vs
[
i
]
=
&
dataobj
.
History
Data
{
Timestamp
:
nextElement
.
Value
.
(
*
dataobj
.
JudgeItem
)
.
Timestamp
,
Value
:
dataobj
.
JsonFloat
(
nextElement
.
Value
.
(
*
dataobj
.
JudgeItem
)
.
Value
),
Extra
:
nextElement
.
Value
.
(
*
dataobj
.
JudgeItem
)
.
Extra
,
}
i
++
currentElement
=
nextElement
...
...
src/modules/judge/judge/func.go
浏览文件 @
d9b89f24
...
...
@@ -8,7 +8,7 @@ import (
)
type
Function
interface
{
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
}
type
MaxFunction
struct
{
...
...
@@ -18,7 +18,7 @@ type MaxFunction struct {
RightValue
float64
}
func
(
this
MaxFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
MaxFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -42,7 +42,7 @@ type MinFunction struct {
RightValue
float64
}
func
(
this
MinFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
MinFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -66,7 +66,7 @@ type AllFunction struct {
RightValue
float64
}
func
(
this
AllFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
AllFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -90,7 +90,7 @@ type SumFunction struct {
RightValue
float64
}
func
(
this
SumFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
SumFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -112,7 +112,7 @@ type AvgFunction struct {
RightValue
float64
}
func
(
this
AvgFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
AvgFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -135,7 +135,7 @@ type DiffFunction struct {
}
// 只要有一个点的diff触发阈值,就报警
func
(
this
DiffFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
DiffFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -163,7 +163,7 @@ type PDiffFunction struct {
RightValue
float64
}
func
(
this
PDiffFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
PDiffFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -193,7 +193,7 @@ type HappenFunction struct {
RightValue
float64
}
func
(
this
HappenFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
HappenFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
for
n
,
i
:=
0
,
0
;
i
<
len
(
vs
);
i
++
{
if
checkIsTriggered
(
vs
[
i
]
.
Value
,
this
.
Operator
,
this
.
RightValue
)
{
n
++
...
...
@@ -211,7 +211,7 @@ type NodataFunction struct {
Function
}
func
(
this
NodataFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
NodataFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
for
_
,
value
:=
range
vs
{
if
!
math
.
IsNaN
(
float64
(
value
.
Value
))
{
return
value
.
Value
,
false
...
...
@@ -228,7 +228,7 @@ type CAvgAbsFunction struct {
CompareValue
float64
}
func
(
this
CAvgAbsFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
CAvgAbsFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -253,7 +253,7 @@ type CAvgFunction struct {
CompareValue
float64
}
func
(
this
CAvgFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
CAvgFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -277,7 +277,7 @@ type CAvgRateAbsFunction struct {
CompareValue
float64
}
func
(
this
CAvgRateAbsFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
CAvgRateAbsFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
@@ -302,7 +302,7 @@ type CAvgRateFunction struct {
CompareValue
float64
}
func
(
this
CAvgRateFunction
)
Compute
(
vs
[]
*
dataobj
.
RRD
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
(
this
CAvgRateFunction
)
Compute
(
vs
[]
*
dataobj
.
History
Data
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
if
len
(
vs
)
<
this
.
Limit
{
return
}
...
...
src/modules/judge/judge/judge.go
浏览文件 @
d9b89f24
...
...
@@ -62,7 +62,7 @@ func ToJudge(historyMap *cache.JudgeItemMap, key string, val *dataobj.JudgeItem,
Judge
(
stra
,
stra
.
Exprs
,
historyData
,
val
,
now
,
history
,
""
,
""
,
""
,
[]
bool
{})
}
func
Judge
(
stra
*
model
.
Stra
,
exps
[]
model
.
Exp
,
historyData
[]
*
dataobj
.
RRD
Data
,
firstItem
*
dataobj
.
JudgeItem
,
now
int64
,
history
[]
dataobj
.
History
,
info
string
,
value
string
,
extra
string
,
status
[]
bool
)
{
func
Judge
(
stra
*
model
.
Stra
,
exps
[]
model
.
Exp
,
historyData
[]
*
dataobj
.
History
Data
,
firstItem
*
dataobj
.
JudgeItem
,
now
int64
,
history
[]
dataobj
.
History
,
info
string
,
value
string
,
extra
string
,
status
[]
bool
)
{
stats
.
Counter
.
Set
(
"running"
,
1
)
if
len
(
exps
)
<
1
{
...
...
@@ -86,10 +86,6 @@ func Judge(stra *model.Stra, exps []model.Exp, historyData []*dataobj.RRDData, f
Granularity
:
int
(
firstItem
.
Step
),
Points
:
historyData
,
}
if
len
(
history
)
==
0
{
//只有第一个指标是push的模式,可以获取到extra字段
h
.
Extra
=
firstItem
.
Extra
}
history
=
append
(
history
,
h
)
defer
func
()
{
...
...
@@ -135,7 +131,7 @@ func Judge(stra *model.Stra, exps []model.Exp, historyData []*dataobj.RRDData, f
Tags
:
""
,
DsType
:
"GAUGE"
,
}
Judge
(
stra
,
exps
[
1
:
],
[]
*
dataobj
.
RRD
Data
{},
judgeItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
Judge
(
stra
,
exps
[
1
:
],
[]
*
dataobj
.
History
Data
{},
judgeItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
return
}
...
...
@@ -143,7 +139,7 @@ func Judge(stra *model.Stra, exps []model.Exp, historyData []*dataobj.RRDData, f
firstItem
.
Endpoint
=
respData
[
i
]
.
Endpoint
firstItem
.
Tags
=
getTags
(
respData
[
i
]
.
Counter
)
firstItem
.
Step
=
respData
[
i
]
.
Step
Judge
(
stra
,
exps
[
1
:
],
respData
[
i
]
.
Values
,
firstItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
Judge
(
stra
,
exps
[
1
:
],
dataobj
.
RRDData2HistoryData
(
respData
[
i
]
.
Values
)
,
firstItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
}
}
else
{
...
...
@@ -162,13 +158,13 @@ func Judge(stra *model.Stra, exps []model.Exp, historyData []*dataobj.RRDData, f
firstItem
.
Endpoint
=
respData
[
i
]
.
Endpoint
firstItem
.
Tags
=
getTags
(
respData
[
i
]
.
Counter
)
firstItem
.
Step
=
respData
[
i
]
.
Step
Judge
(
stra
,
exps
[
1
:
],
respData
[
i
]
.
Values
,
firstItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
Judge
(
stra
,
exps
[
1
:
],
dataobj
.
RRDData2HistoryData
(
respData
[
i
]
.
Values
)
,
firstItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
}
}
}
}
func
judgeItemWithStrategy
(
stra
*
model
.
Stra
,
historyData
[]
*
dataobj
.
RRD
Data
,
exp
model
.
Exp
,
firstItem
*
dataobj
.
JudgeItem
,
now
int64
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
func
judgeItemWithStrategy
(
stra
*
model
.
Stra
,
historyData
[]
*
dataobj
.
History
Data
,
exp
model
.
Exp
,
firstItem
*
dataobj
.
JudgeItem
,
now
int64
)
(
leftValue
dataobj
.
JsonFloat
,
isTriggered
bool
)
{
straFunc
:=
exp
.
Func
straParam
:=
[]
interface
{}{}
...
...
@@ -298,7 +294,7 @@ func GetReqs(stra *model.Stra, metric string, endpoints []string, now int64) ([]
stats
.
Counter
.
Set
(
"get.index"
,
1
)
indexsData
,
err
:=
query
.
Xclude
(
req
)
if
err
!=
nil
{
return
reqs
,
err
logger
.
Warning
(
"get index err:"
,
err
)
}
lostSeries
:=
[]
cache
.
Series
{}
...
...
@@ -345,6 +341,10 @@ func GetReqs(stra *model.Stra, metric string, endpoints []string, now int64) ([]
}
seriess
:=
cache
.
SeriesMap
.
Get
(
stra
.
Id
)
if
len
(
seriess
)
==
0
&&
err
!=
nil
{
return
reqs
,
err
}
step
:=
0
if
len
(
seriess
)
>
1
{
step
=
seriess
[
0
]
.
Step
...
...
@@ -389,7 +389,7 @@ func GetReqs(stra *model.Stra, metric string, endpoints []string, now int64) ([]
return
reqs
,
nil
}
func
sendEventIfNeed
(
historyData
[]
*
dataobj
.
RRD
Data
,
status
[]
bool
,
event
*
dataobj
.
Event
,
stra
*
model
.
Stra
)
{
func
sendEventIfNeed
(
historyData
[]
*
dataobj
.
History
Data
,
status
[]
bool
,
event
*
dataobj
.
Event
,
stra
*
model
.
Stra
)
{
isTriggered
:=
true
for
_
,
s
:=
range
status
{
isTriggered
=
isTriggered
&&
s
...
...
src/modules/judge/judge/nodata.go
浏览文件 @
d9b89f24
...
...
@@ -51,7 +51,7 @@ func nodataJudge() {
}
nodataJob
.
Acquire
()
go
AsyncJudge
(
nodataJob
,
stra
,
stra
.
Exprs
,
[]
*
dataobj
.
RRD
Data
{},
judgeItem
,
now
,
[]
dataobj
.
History
{},
""
,
""
,
""
,
[]
bool
{})
go
AsyncJudge
(
nodataJob
,
stra
,
stra
.
Exprs
,
[]
*
dataobj
.
History
Data
{},
judgeItem
,
now
,
[]
dataobj
.
History
{},
""
,
""
,
""
,
[]
bool
{})
}
return
}
...
...
@@ -80,12 +80,12 @@ func nodataJudge() {
}
nodataJob
.
Acquire
()
go
AsyncJudge
(
nodataJob
,
stra
,
stra
.
Exprs
,
data
.
Values
,
judgeItem
,
now
,
[]
dataobj
.
History
{},
""
,
""
,
""
,
[]
bool
{})
go
AsyncJudge
(
nodataJob
,
stra
,
stra
.
Exprs
,
data
obj
.
RRDData2HistoryData
(
data
.
Values
)
,
judgeItem
,
now
,
[]
dataobj
.
History
{},
""
,
""
,
""
,
[]
bool
{})
}
}
}
func
AsyncJudge
(
sema
*
semaphore
.
Semaphore
,
stra
*
model
.
Stra
,
exps
[]
model
.
Exp
,
historyData
[]
*
dataobj
.
RRD
Data
,
firstItem
*
dataobj
.
JudgeItem
,
now
int64
,
history
[]
dataobj
.
History
,
info
string
,
value
string
,
extra
string
,
status
[]
bool
)
{
func
AsyncJudge
(
sema
*
semaphore
.
Semaphore
,
stra
*
model
.
Stra
,
exps
[]
model
.
Exp
,
historyData
[]
*
dataobj
.
History
Data
,
firstItem
*
dataobj
.
JudgeItem
,
now
int64
,
history
[]
dataobj
.
History
,
info
string
,
value
string
,
extra
string
,
status
[]
bool
)
{
defer
sema
.
Release
()
Judge
(
stra
,
exps
,
historyData
,
firstItem
,
now
,
history
,
info
,
value
,
extra
,
status
)
}
src/modules/monapi/cron/event_consumer.go
浏览文件 @
d9b89f24
...
...
@@ -220,10 +220,9 @@ func isInConverge(event *model.Event) bool {
return
false
}
//
三
种情况,不需要升级报警
//
两
种情况,不需要升级报警
// 1,认领的报警不需要升级
// 2,忽略的报警不需要升级
// 3,屏蔽的报警不需要升级,屏蔽判断在前面已经有了处理,这个方法不用关注
// 2,屏蔽的报警不需要升级,屏蔽判断在前面已经有了处理,这个方法不用关注
func
needUpgrade
(
event
*
model
.
Event
)
bool
{
alertUpgradeKey
:=
PrefixAlertUpgrade
+
fmt
.
Sprint
(
event
.
HashId
)
eventAlertKey
:=
PrefixAlertTime
+
fmt
.
Sprint
(
event
.
HashId
)
...
...
@@ -282,11 +281,6 @@ func needUpgrade(event *model.Event) bool {
return
false
}
// 告警已经忽略了
if
eventCur
.
IgnoreAlert
==
1
{
return
false
}
// 告警之后,比如30分钟没有处理,就需要升级,那首先得知道首次告警时间
if
!
redisc
.
HasKey
(
eventAlertKey
)
{
err
:=
redisc
.
SetWithTTL
(
eventAlertKey
,
now
,
30
*
24
*
3600
)
...
...
src/modules/monapi/http/routes/event.go
浏览文件 @
d9b89f24
...
...
@@ -9,6 +9,7 @@ import (
"github.com/toolkits/pkg/errors"
"github.com/didi/nightingale/src/dataobj"
"github.com/didi/nightingale/src/model"
jsoniter
"github.com/json-iterator/go"
)
...
...
@@ -79,9 +80,9 @@ func eventCurGets(c *gin.Context) {
err
=
json
.
Unmarshal
([]
byte
(
events
[
i
]
.
Detail
),
&
detail
)
errors
.
Dangerous
(
err
)
tagsList
:=
[]
string
{}
for
k
,
v
:=
range
detail
[
0
]
.
Tags
{
tags
List
=
append
(
tagsList
,
fmt
.
Sprintf
(
"%s=%s"
,
k
,
v
)
)
var
tags
string
if
len
(
detail
)
>
0
{
tags
=
dataobj
.
SortedTags
(
detail
[
0
]
.
Tags
)
}
alertUpgrade
,
err
:=
model
.
EventAlertUpgradeUnMarshal
(
events
[
i
]
.
AlertUpgrade
)
...
...
@@ -106,7 +107,7 @@ func eventCurGets(c *gin.Context) {
Etime
:
events
[
i
]
.
Etime
,
Value
:
events
[
i
]
.
Value
,
Info
:
events
[
i
]
.
Info
,
Tags
:
strings
.
Join
(
tagsList
,
","
)
,
Tags
:
tags
,
Created
:
events
[
i
]
.
Created
,
Nid
:
events
[
i
]
.
Nid
,
Users
:
users
,
...
...
@@ -164,9 +165,9 @@ func eventHisGets(c *gin.Context) {
err
=
json
.
Unmarshal
([]
byte
(
events
[
i
]
.
Detail
),
&
detail
)
errors
.
Dangerous
(
err
)
tagsList
:=
[]
string
{}
for
k
,
v
:=
range
detail
[
0
]
.
Tags
{
tags
List
=
append
(
tagsList
,
fmt
.
Sprintf
(
"%s=%s"
,
k
,
v
)
)
var
tags
string
if
len
(
detail
)
>
0
{
tags
=
dataobj
.
SortedTags
(
detail
[
0
]
.
Tags
)
}
alertUpgrade
,
err
:=
model
.
EventAlertUpgradeUnMarshal
(
events
[
i
]
.
AlertUpgrade
)
...
...
@@ -191,7 +192,7 @@ func eventHisGets(c *gin.Context) {
Etime
:
events
[
i
]
.
Etime
,
Value
:
events
[
i
]
.
Value
,
Info
:
events
[
i
]
.
Info
,
Tags
:
strings
.
Join
(
tagsList
,
","
)
,
Tags
:
tags
,
Created
:
events
[
i
]
.
Created
,
Nid
:
events
[
i
]
.
Nid
,
Users
:
users
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录