2015-08-19 4 views
0

Мне нужно, чтобы ElasticSearch watcher предупредил, нет ли записи, соответствующей шаблону, вставленному в индекс за временные рамки, он должен быть в состоянии сделать это, в то время как группировка на другом пара полей. т.е. записей будет шаблона: Дата Отметка Уровень клиентского сообщения сайтаПредупреждение наблюдателя, если нет записей, соответствующих фильтру за x минут

Необходимо проверить, что сообщение соответствует «бежит» для сайта (ов) для каждого клиента (т.е. Google Maps и Bing Maps имеют один и тот же сайт карт). I tihnk лучший (?) Способ сделать это прямо сейчас - запустить wacher на клиентский сайт.

Софар У меня есть это, предположим, что задача должна написать запущена в журнал каждые 20 минут:

{ 
    "trigger" : { 
    "schedule" : { 
     "interval" : "25m" 
    } 
    }, 
    "input" : { 
    "search" : { 
     "request" : { 
     "search_type" : "count", 
     "indices" : "<logstash-{now/d}>", 
     "body" : { 
      "filtered" : { 
      "query" : { 
       "match_phrase" : { "Message" : "Is running" } 
      }, 
      "filter" : { 
       "match" : { "Client" : "Example" } , 
       "match" : { "Site" : "SomeSite" } 
      } 

      } 
     } 
     } 
    } 
    }, 
    "condition" : { 
    "script" : "return ctx.payload.hits.total < 1" 
    }, 

    "actions" : { 
    }, 
    "email_administrator" : { 
     "email" : { 
     "to" : "[email protected]", 
     "subject" : "Tasks are not running for {{ctx.payload.client}} on their site {{ctx.payload.site}}", 
     "body" : "Too many error in the system, see attached data", 
     "attach_data" : true, 
     "priority" : "high" 
     } 
    } 
    } 
} 

ответ

0

Для тех, кто ищет, как сделать это в будущем, несколько вещей, которые нужно вложенности в запросе в качестве части фильтра и соответствия становится термином. ! Fun ...

{ 
    "trigger": { 
    "schedule": { 
     "interval": "25m" 
    } 
    }, 
    "input": { 
    "search": { 
     "request": { 
     "search_type": "count", 
     "indices": "<logstash-{now/d}>", 
     "body": { 
      "query": { 
      "filtered": { 
       "query": { 
       "match_phrase": { 
        "Message": "Its running" 
       } 
       }, 
       "filter": { 
       "query": { 
        "term": { 
        "Client": "Example" 
        } 
       }, 
       "query": { 
        "term": { 
        "Site": "SomeSite" 
        } 
       }, 
       "query": { 
        "range": { 
        "event_timestamp": { 
         "gte": "now-25m", 
         "lte": "now" 
        } 
        } 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    }, 
    "condition": { 
    "compare": { 
     "ctx.payload.hits.total": { 
     "lte": 1 
     } 
    } 
    }, 

    "actions": { 
    "email_administrator": { 
     "email": { 
     "to": "[email protected]", 
     "subject": "Tasks are not running for {{ctx.payload.client}} on their site {{ctx.payload.site}}", 
     "body": "Tasks are not running for {{ctx.payload.client}} on their site {{ctx.payload.site}}", 
     "attach_data": true, 
     "priority": "high" 
     } 
    } 
    } 
} 
0

Вы должны изменить свое состояние, он поддерживает формат JSON:

 "condition" : { 
     "script" : "return ctx.payload.hits.total : 1" 
        } 

Пожалуйста, изучите приведенные ниже ссылки,

https://www.elastic.co/guide/en/watcher/current/condition.html 
Смежные вопросы