Sensu: лучшие практики для обработки чека только после n случаев
Недавно я обновил 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 минут (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
но, похоже, мое понимание того, как фильтрация и события работают для проверок, просто неверно. Может быть, чеки вообще не считают их?
Может кто-нибудь помочь и объяснить это?
1 ответ
Как оно стоит сейчас, похоже occurrences
в вашем handlers
Блок JSON написан неправильно как occurences.
Ты захочешь "negate": false
так, что ваш eval
в настоящее время написано. когда negate
является false
это означает, что обработчик сработает только тогда, когда оценка фильтра верна - negate
просто перевернет результат, чтобы обработчики сработали, когда оценка фильтра ложна.
Наконец, если вы хотите вызвать обработчик "каждые 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"
}
}
}
Это позволит вам использовать встроенный фильтр "вхождения", а также ваш собственный фильтр.