【发布时间】:2018-02-01 10:42:13
【问题描述】:
我最近从 Sensu 0.24 升级到 1.2 并注意到检查立即触发到引用的处理程序。
在旧的检查(v0.24)上,检查有一个“发生”属性来过滤噪音。 我只希望处理程序在每 n 次发生时处理检查,即 http 检查必须失败 5 次才能触发 pagerduty 处理程序。这种行为似乎随着 sensu 升级而改变。
据我了解,处理程序应该包含一个过滤器,以根据属性对事件进行排序。所以假设这是我的支票:
{
"checks": {
"examplecom_http": {
"command": "check-http.rb --url https://example.com -s -k -q 'Keyword'",
"handlers": ["default","pagerduty"],
"subscribers": ["network"],
"interval": 60,
"occurrences": 5
}
}
}
在以前的版本中(或者至少这是我的理解),只有在失败 5 分钟(60 秒间隔内发生 5 次)后才会处理此检查。这不再起作用了,所以现在处理程序应该包含一个过滤器来处理事件:
{
"handlers": {
"pagerduty": {
"type": "pipe",
"command": "/etc/sensu/plugins/pagerduty.rb",
"severities": ["critical"],
"filter": "occurences"
}
}
“发生”过滤器看起来像这样:
{
"filters": {
"occurences": {
"attributes": {
"occurrences": "eval: value >= 5"
}
}
}
}
但是,无论eval 部分之后出现什么,无论是value >= 5 还是value < 5,效果都是一样的,并且会执行pagerduty 处理程序。我已经尝试将negate 指令与true 和false 一起使用,但似乎我对过滤和发生检查的工作原理的理解是不正确的。也许检查根本不计算它们的发生次数?
有人可以帮忙解释一下吗?
【问题讨论】: