Оповещение наблюдателя, если в течение x минут не найдено записей, соответствующих фильтру
Мне нужно, чтобы наблюдатель ElasticSearch оповещал, если нет записи, соответствующей шаблону, вставленному в индекс во временном интервале, он должен быть в состоянии сделать это, группируя по другой паре полей. то есть записи будут иметь вид: Date Timestamp Уровень Сообщение Сайт клиента
Необходимо проверить, что Соответствия сообщений "запущены" для каждого сайта (-ов) Клиента (т. Е. Карты Google и Карты Bing имеют один и тот же сайт Карт). Я считаю, что лучший (?) Способ сделать это прямо сейчас - запустить 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" : "me@host.tld",
"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"
}
}
}
}
2 ответа
Вы должны изменить свое состояние, он поддерживает формат JSON:
"condition" : {
"script" : "return ctx.payload.hits.total : 1"
}
Пожалуйста, обратитесь по ссылке ниже,
https://www.elastic.co/guide/en/watcher/current/condition.html
Для тех, кто ищет, как это сделать в будущем, несколько вещей должны быть вложены в запрос как часть фильтра, и соответствие становится термином. Веселье!...
{
"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": "me@host.tld",
"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"
}
}
}
}