在 Node.js 性能平台的监控设置中,有两项表达式需要用户进行输入,阈值表达式和报警表达式。
监控系统会根据阈值表达式来进行是否进行报警的判定。当判定完成,决定发送警报时,会使用报警表达式来描述警报的详情。
阈值表达式
阈值表达式是由 Node.js 性能平台定义的一个报警判定DSL,处于灵活性和安全的考虑,我们定义了有限的表达方式。
每个应用的开发者可以输入一个阈值表达式,该表达式会被编译为一个等价的JavaScript函数。当监控系统收到当前类型的监控数据时,会将监控数据作为上下文,代入阈值表达式,如果表达式结果为true,则判定需要发送警报。
一个基本的表达式由三个部分组成:属性、比较操作符、字面量。
属性
属性标识是指上下文对象的属性表示方式,形式为:@xxx,以@开头接一个属性名。例如:@load1、@cpu、@freemem。
比较操作符
比较操作符跟普通的编程语言里的符号完全相同:==、>=、>、<=、<、!=。
运算符
支持+、-、*、/、%运算符,如:@heap_used / @heap_limit。
字面量
字面量是指基本的数值类型和字符串类型。一个基本的表达式类似这样:@load1 > 5。
include
include关键字用于属性值中是否包含某个字符串。如:@message include “TypeError”。
其他
其他的操作符有&&、||以及()。与普通编程语言表达意思相同。如:
@cpu > 0.10 || @load1 > 5
@cpu > 0.10 && @load1 > 5
@cpu > 0.10 && (@load1 > 5 && @load5 > 5)
报警表达式
报警表达式类似于阈值表达式,但是并不用来做判定,更类似于模版语言。以下为简单例子:
I am ${@name}. I am @ a g e y e a r s o l d . 其 格