我最近从Sensu 0.24升级到1.2并注意到检查会立即触发引用的处理程序。
在旧支票上(使用v0.24),支票有"出现"过滤掉噪音的属性。 我只希望在每次出现的情况下由处理程序处理检查,即http检查必须在触发pagerduty处理程序之前失败5次。这种行为似乎随着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分钟(发生5次,间隔60秒)失败后处理。这不再起作用了,所以现在处理程序应该包含一个过滤器来处理事件:
{
"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
一起使用,但似乎我对过滤和出现检查的工作方式的理解是不正确的。也许检查根本不计算它们的出现次数?
有人可以帮忙解释一下吗?
答案 0 :(得分:3)
就目前而言,您的occurrences
JSON块中的handlers
似乎被错误地拼写为occurences.
您将希望"negate": false
像eval
那样被写入。当negate
为false
时,这意味着处理程序仅在过滤器评估为true时才触发-negate
将简单地反转结果,以便处理程序在过滤器评估为false时触发。 >
最后,如果您希望触发处理程序“每n次出现”而不是第5次之后的每次出现,请考虑以下评估:
{
"filters": {
"every_five": {
"attributes": {
"occurrences": "eval: value % 5 == 0"
}
}
}
}
这样,当出现次数可被5整除时,处理程序将触发,但是您需要在处理程序定义中添加every_five
过滤器。您可以将filter
更改为filters
并改为传递数组,如下所示:
{
"handlers": {
"pagerduty": {
"type": "pipe",
"command": "/etc/sensu/plugins/pagerduty.rb",
"severities": ["critical"],
"filters": [
"occurrences",
"every_five"
}
}
}
这将允许您使用built-in filter "occurrences"以及自定义过滤器。