Кибана: могу ли я сохранить «Время» как переменную и выполнить последовательный поиск? - PullRequest
1 голос
/ 16 октября 2019

Я хочу автоматизировать несколько поисков в одном, вот шаги:

  1. Поиск в Кибане для этого идентификатора: "b2c729b5-6440-4829-8562-abd81991e2a0", который вернет мне кучу журналов. Из этих журналов мне нужно взять первую и последнюю отметку времени:

enter image description here

Теперь я хотел бы сохранить эти две данные ОТ: September 3rd 2019, 21:28:22.155, TO: September 3rd 2019, 21:28:23.524 в 2 переменных

Выполнить второй поиск в Кибане по слову"fail" между этими двумя переменными времени

Как автоматизировать весь процесс без необходимости копирования / вставки и выполнения второго запроса?

РЕДАКТИРОВАТЬ:

КОРОТКАЯ ИСТОРИЯ ДОЛГО: Я работаю в компании, которая производит программное обеспечение для автономных транспортных средств. СЦЕНАРИЙ: Бронирование отклонено, и мы должны понять, почему.
ГДЕ ПРОБЛЕМА: Мне нужно всего несколько секунд отслеживать журналы на 3 разных машинах. Каждый журнал полностью отделен, между журналами нет никакой связи, поэтому я не могу написать запрос в обнаружении, мне нужно выполнить 3 отдельных запроса.

ПРИМЕР:

  1. Бронирование было отклонено, поэтому я открываю Chrome и выполняю поиск на «elk-prod.myhost.com» для идентификатора бронирования: "b2c729b5-6440-4829-8562-abd81991e2a0" и у меня есть дюжина журналов, возвращенных в течение 2 секунд (ОТ: September 3rd 2019, 21:28:22.155, ДО: September 3rd 2019, 21:28:23.524).
  2. Теперь мне нужно знать, что происходило на автомобиле, поэтому я открываю новую вкладку Chrome и ищу на «elk-prod.myhost.com» CarID: "Tesla-45-OU" во временном диапазоне ОТ:September 3rd 2019, 21:28:22.155, TO: September 3rd 2019, 21:28:23.524
  3. Теперь мне нужно знать, почему сервер, который вычисляет соответствие, отклонил бронирование, поэтому я открываю новую вкладку Chrome и ищу слово CalculationMatrix всегда вовремядиапазон ОТ: September 3rd 2019, 21:28:22.155, TO: September 3rd 2019, 21:28:23.524

ВЫВОД: Я хочу прекратить открывать вкладки Chrome вручную и автоматизировать все это. Я понятия не имею, в какое время была написана книга, поэтому мне нужно сначала найти BookingID "b2c729b5-6440-4829-8562-abd81991e2a0", затем сохранить временную метку первого и последнего журнала и выполнить второй и третий запрос на основе этих временных меток.

Нет никакого отношения между 3 журналами, которые я ищу, поэтому нет никакого способа отфильтровать из Discover, мне нужно автоматизировать 3 различных запроса.

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Вот как бы я это сделал. Прежде всего, насколько я понимаю, у вас есть три разных индекса:

  • один для «бронирований»
  • один для «машин»
  • один для «совпадений»"

Сначала в Discover я бы создал три сохраненных поиска, по одному на каждый шаблон индекса. Затем в Visualize я создал бы вертикальную гистограмму для поиска, сохраненного при бронировании (Bucket X-Axis по date_histogram в поле timestamp, оставьте все как есть). Вы получите хорошую гистограмму всех ваших событий бронирования, сгруппированных по времени. Наконец, я бы создал панель мониторинга и добавил бы вертикальную гистограмму + эти три сохраненных поиска внутри нее.

Когда все будет выполнено, поиск в соответствии с процессом, описанным выше, будет следующим:

  1. Поиск идентификатора бронирования b2c729b5-6440-4829-8562-abd81991e2a0 в верхней панели фильтров. На гистограмме гистограммы (бронирования) вы увидите все документы, связанные с выбранным бронированием. На этом графике вы можете выбрать точный период, с которого самый первый документ бронирования произошел до самого последнего. Это позволит адаптировать основной счетчик времени вверху, и время начала / окончания будет «запомнено» Кибаной

  2. Удалите идентификатор бронирования из верхнего фильтра (поскольку теперь мы знаем времяассортимент и кибана хранит его). Найдите Tesla-45-OU в верхней панели фильтров. Гистограмма гистограммы + поиск, сохраненный при бронировании + поиск, сохраненный при поиске совпадений, будет пустым, но вы будете иметь данные во втором списке, который относится к автомобилям. Найдите там все, что вам нужно, и переходите к следующему шагу.

  3. Удалите идентификатор автомобиля из верхнего фильтра и найдите ComputationMatrix. Теперь третий сохраненный поиск покажет вам все документы, которые вам нужно увидеть за этот промежуток времени.

Мне не хватает реалистичных данных, чтобы попробовать это, но я определенно думаю, что этовозможно, как я изложил выше, возможно, с некоторыми приспособлениями.

0 голосов
/ 18 октября 2019

Kibana работает так (любой порядок в порядке):

  1. Выберите фильтр времени: https://www.elastic.co/guide/en/kibana/current/set-time-filter.html

  2. Добавьте дополнительные критерии для поиска, например дляпример поля s равно b2c729b5-6440-4829-8562-abd81991e2a0.

  3. Добавить дополнительные критерии поиска, например, поле x равно Fail.

Кроме того, вы можете view surrounding documents https://www.elastic.co/guide/en/kibana/current/document-context.html#document-context

Так работает Kibana.

Вы можете подготовить несколько filters предварительных инструкций, сохранить их, а затем использовать их, если хотите automate процесс открытия как-то. Вы можете сделать это на вкладке Discover в Kibana, используя опции New/Save/Open.

Редактировать: Я не думаю, что вы можете достичь того, что вам нужно в Кибане. Как я упоминал ранее, одним из вариантов является изменение данных, поступающих в Elasticsearch, чтобы вы могли искать их через обнаружение в Кибане. Другим вариантом может быть, например, сборка Java-приложения, использующего Elasticsearch - тогда вы можете написать алгоритм, который возвращает нужные вам данные. Но я думаю, что это большие затраты, и я рекомендую сначала проверить данные.

Редактировать : Чтобы уточнить - вы можете создать внешнее Java, скажем, SpringBoot приложение, которое использует Elasticsearch - все необходимые данные находятся внутри него. Но в этом варианте вы вообще не будете использовать Kibana. Вы можете экспортировать результат в csv или что вы хотите в коде. SpringBoot приложение может запросить ElasticSearch о том, что ему нужно, тогда было бы легко сохранить эти временные переменные внутри кода Java.

РЕДАКТИРОВАТЬ: После того, как OP отредактировал вопрос, чтобы изменить его резко:

@ FrancescoMantovani Ну, отредактированная версия сильно отличается от того, где вы впервые разместили здесь How to automate the whole process without need of copy/paste and running a second query?, и ищите слово fail в одном кадре. В принятом ответе вы по-прежнему используете три фильтра по одному, поэтому это не один поиск, а три. Более того, если вы используете один индекс и отправляете данные с нескольких хостов через filebeat, вам даже не нужно создавать этот dashboard для этого. Затем вы можете you can select the exact period from when the very first document happened to the very last относительно фильтра, а затем удалить его и добавить еще один фильтр, который вам нужен - все просто. Прежде чем писать о one query,

Как автоматизировать весь процесс без необходимости копировать / вставить и выполнить второй запрос ?

не three. И вам не нужно открывать новую вкладку в Chrome каждый раз, когда вы хотите изменить фильтр, просто организуйте данные, например, используя filebeat, как упоминалось ранее.

Нет никакой связи между3 журнала

Из того, что вы написали, существует реализация, и это время .

Если данные, например, three diferent indicies (потому что документы неу вас не так много похожих данных) вы можете сделать это так:

Вы можете легко изменить их в dicover см .: enter image description here Вы можете перейти к discover выбрать index 1поиск, выберите нужный вам временной интервал, при изменении index time range все равно тот, который вы выбрали, вам нужно только изменить фильтр - вы получите то, что вам нужно.

...