2016-09-08 1 views
0

я не пытаюсь установить Бодрствующую для следующего сценарияРеализовать Бодрствующий для отправки почты, если нет ввода в прошлом н секундах

, если нет ни одного документа, вставленного в индекс за последний п часов, отправить предупреждение. Чтобы мы могли проверить, есть ли какая-либо проблема в разрыве связи между нашими узлами и эластичным поиском.

Для реализации такого сценария я использовал следующий json для репликации.

curl -XPUT 'http://10.x.x.1:9200/_watcher/watch/log_error_watch' -d '{ 
    "trigger" : { "schedule" : { "interval" : "10s" } }, 
    "input" : { 
    "search" : { 
     "request" : { 
     "indices" : [ "test" ], 
     "body" : { 
      "query" : { 
      "match_all" : {} 
      } 
     } 
     } 
    } 
    }, 
    "condition": { 
    "array_compare": { 
     "ctx.payload.aggregations.test.buckets" : { 
     "path": "doc_count" , 
     "lt": { 
      "value": 1, 
      "quantifier": "some" 
     } 
     } 
    } 
    }, 
    "actions" : { 
    "log_error" : { 
     "logging" : { 
     "text" : "No data for past 10 seconds" 
     } 
    } 
    } 
}' 

Но его сообщение не помещается в журналы. Может кто-то, пожалуйста, помогите мне с логикой в ​​разделе состояния.

+0

Ваш поиск ввода запроса не имеет каких-либо агрегатов. Почему вы используете это условие для проверки агрегатов? 'ctx.payload.aggregations.test.buckets' –

ответ

0

Используйте это условие вместо:

"condition": { 
    "compare": { 
     "ctx.payload.hits.total": { 
     "gt": 0 
     } 
    } 
    } 
+0

, если количество обращений больше 0, это отправит предупреждение. то есть, если есть какой-либо документ, вставленный в течение 10 секунд, я получу предупреждение. . Тем не менее, я ищу противоположный случай. если никакие документы в 10секундах не отправляют предупреждение. – srinath

+0

«ctx.payload.hits.total» рассчитает общее количество обращений в течение 10 секунд. или он будет вычислять полные записи в индексе с самого начала – srinath

+0

Это ничего не вычисляет. Вы запускаете запрос на своем входе, и в вашем случае я вижу, что это 'match_all'. Результат этого запроса будет передан условию. Таким образом, вы запускаете 'match_all', и условие проверяет, есть ли какие-либо результаты. Вот и все. –

Смежные вопросы