Sensu:仅在出现后检查

时间:2018-02-01 10:42:13

标签: sensu pagerduty

我最近从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指令与truefalse一起使用,但似乎我对过滤和出现检查的工作方式的理解是不正确的。也许检查根本不计算它们的出现次数?

有人可以帮忙解释一下吗?

1 个答案:

答案 0 :(得分:3)

就目前而言,您的occurrences JSON块中的handlers似乎被错误地拼写为occurences.

您将希望"negate": falseeval那样被写入。当negatefalse时,这意味着处理程序仅在过滤器评估为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"以及自定义过滤器。