bosun是常用的报警系统,通过配置metrics(items)图可以得到某一个参数在指定时间内的变化,比如设为10s,每隔10s就会去拉这个数据并画图,依据这个图可以实现对某些参数的监控,以此作为报警的依据。
大多数公司的基础架构组都会出一套完备的解决方案,但是核心甚至规则的自定义还是需要bosun语法,因此学习下。
基本的就是用q(xxx)来计算metrics图里面值的sum,count,change等等,并赋值给一个值,值的前面要带上$表示是一个变量, 具体语法可以参考这篇文章,写的很详细
举两个常用的例子
cpu:
avg(q(“sum:sys.cpu{host=xxx}”, “5m”, “”)) > 0.8
表示5分钟内cpu平均高于80%
error_log达到一定数量:
lognum=avg(q(“sum:rate:myservice.throughputlevel=ERROR|CRITICAL”,“5m”,“1m”))warn=
l
o
g
n
u
m
=
a
v
g
(
q
(
“
s
u
m
:
r
a
t
e
:
m
y
s
e
r
v
i
c
e
.
t
h
r
o
u
g
h
p
u
t
l
e
v
e
l
=
E
R
R
O
R
|
C
R
I
T
I
C
A
L
”
,
“
5
m
”
,
“
1
m
”
)
)
w
a
r
n
=
log_num > 1000
表示error和critical级别的log 1s注入超过1000