我最近从 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
似乎我对过滤和发生如何进行检查的理解是不正确的。也许检查根本不计算它们的出现?
有人可以帮忙解释一下吗?