规则的通配符类似传统的通配符, 和指标名字一样,按点分割,只支持 *
, 并且星号必须代表一个单词.
a.b.c.d.e 命中 a.*.c.*.e
a.b.c.d.e 不命中 a.*
[ ] 当趋势异常上升 并且 指标值 >= ___
或者
[ ] 当趋势异常下降 并且 指标值 <= ___
当趋势异常上升
=>当指标趋势异常地上升时告警
当趋势异常下降
=>当指标趋势异常地下降时告警
当指标数值>=X
=>当指标数值大于X时告警
当指标数值<=X
=>当指标数值小于X时告警
当指标异常上升 && 指标数值>=X
=>当指标趋势异常地上升到X以上时告警
当指标异常下降 && 指标数值<=X
=>当指标趋势异常地下降到X以下时告警
当指标异常上升 || 当指标异常地下降
=>当指标趋势异常地上升或下降时告警
- 以及更多组合...
设固定阈值为0意味着该规则和该阈值没有关系.
对于时长类指标我们一般只关心其上升趋势,下面的例子表示:当note.add
耗时异常地
上升时告警.
对于频次类指标我们一般关心其上升和下降趋势,下面的例子表示:当note.add
调用次数异常地
上升或者下降时告警.
对于错误类计数指标我们一般只关心其上升趋势,下面的例子表示: 当note.add
错误个数异常地
上升时告警.
有时我们可能需要硬性阈值而不是动态分析趋势,下面的例子表示: 当note.add
错误个数超过10的
时候告警.
每条规则必须添加一条注释,banshee支持对规则注释进行变量匹配, 例子:
规则通配符: counter.*.*.error
规则注释: 服务$1的$2接口的错误
命中指标: counter.note.add.error
告警消息: 服务note的add接口的错误
命中禁用规则的指标仍然会继续流入和分析但是该规则的告警消息不会发出.
以下的示例为永久禁用规则:
以下的示例为暂时禁用规则,规则会在一定时间后自动解除禁用:
由于只有数据点流入才会让banshee去检测异常,所以对于一个指标不再发送数据点过来的情况banshee并不会 去检测这个情况。
如果statsd中的配置deleteIdleStats
被设置为true
, 一个指标
在一个statsd的flush_interval
时间内没有新的数据点产生的话,statsd就不会发数据点给它的后端,
因此banshee也无从知道空值. 但是对于调用频次类指标空值很可能意味着调用量掉底。
我们可以让banshee追踪一些空值指标,如果banshee发现一个指标在一定时间内没有进入,它会模拟一个零值 指标主动进入分析过程, 如果零值异常, 发送告警消息.
全局接收消息的接收人会接收所有项目的告警消息.
默认的,配置文件中约定的免打扰时段是每天的凌晨0点到6点,以下的例子为自定义项目的免打扰时段: