Нужен диапазон фильтра запросовasticsearch, который запускается за 5 минут до запланированного времени - PullRequest
0 голосов
/ 15 января 2020

Я использую эластичный поиск 6.5.4 и наблюдателя кибаны для оповещения. У меня есть диапазон фильтра примерно так:

"filter": [
  {
    "range": {
      "@timestamp": {
        "gte": "{{ctx.trigger.scheduled_time}}||-{{ctx.metadata.triggered_interval}}m"
      }
    }
  }
]

Запланированное время - каждый час на 5-й минуте (1:05, 2:05 и т. Д. c.). Значение triggered_interval равно 60.

Я хочу собрать диапазон временных меток, игнорируя последние 5 минут. По сути, некоторые сообщения о состоянии могут быть слишком новыми для истинных ошибок, поэтому я хочу их игнорировать.

Я пытаюсь обработать это так, что оно выглядит так: время начала равно trigger.scheduled_time - 5 м, а время окончания - triggered_interval .

Формат диапазона: time1-time2, поэтому schedule_time-5m-triggered_interval является недопустимым синтаксисом. Я пробовал несколько итераций, но ничего не получается. Наблюдатель просто возвращает исключение нулевого указателя.

"gte": "<{{{ctx.trigger.scheduled_time}}||-5m}>-{{ctx.metadata.triggered_interval}}m"
"gte": "<{{ctx.trigger.scheduled_time}}||-5m>-{{ctx.metadata.triggered_interval}}m"
"gte": "{{ctx.trigger.scheduled_time}}||-5m-{{ctx.metadata.triggered_interval}}m"
"gte": "({{ctx.trigger.scheduled_time}}||-5m)-{{ctx.metadata.triggered_interval}}m"

Возможно ли это сделать в фильтре диапазона?

1 Ответ

1 голос
/ 15 января 2020

Функция эластичного поиска Дата по математике вместе с запросом диапазона должны помочь.

Если вы хотите выбрать все события старше 5 минут и младше, чем 60 минут, относительно времени выполнения, я go с этим:

"filter": [
  {
    "range": {
      "@timestamp": {
        "lte": "now-5m/m",
        "gte": "now-60m/m"
      }
    }
  }
]

Другими словами: Получить все события, где @timestamp старше 5 минут, но не старше 60 минут со всеми @ timestamps, округленными до полной минуты. Если вам не нужно округление, просто удалите /m.

Cheers!

...