Splunk сравнивает два рекс-запроса из разных источников - PullRequest
0 голосов
/ 18 января 2020

У меня есть два запроса ...

(1) отправить запрос журнала:

index=xxx_prod host="foo.org" 5032 submit | rex "id=PO:(?<PO>\d*)" | dedup PO | table PO _time

(2) сохраненный запрос журнала :

index=xxx_prod host="bar.org" | rex "savePO.*POId=(?<PO>\d*).*\"responseCode\":200" | dedup PO | table PO _time

Я хочу сравнить результаты PO и timestamp (из поля _time) для разных служб: одно - событие отправки, другое - событие сохранения. и я хочу показать это в виде следующей таблицы

   PO    | submit_date             | save_date               | elapse_time_min | isSave   
 1000001 | 2020-01-18 02:09:49.022 | 2020-01-18 02:51:51q289 | 41              | true
 1000002 | 2020-01-18 03:18:25.780 | 2020-01-18 03:59:08.695 | 49              | true
 1000003 | 2020-01-18 03:18:25.780 |                         |                 | false

Ответы [ 2 ]

0 голосов
/ 21 января 2020

В этом случае вы можете использовать левое соединение в поле PO.

index=xxx_prod host="foo.org" 5032 submit | rex "id=PO:(?<PO>\d*)" | dedup PO | table PO _time
|rename _time as submit_date
|join type=left PO
[search index=xxx_prod host="bar.org" | rex "savePO.*POId=(?<PO>\d*).*\"responseCode\":200" | dedup PO | table PO _time
|rename _time as save_date]
|eval elapse_time_min=round((save_date-submit_date)/60),0)
|eval isSave=if(isnull(save_date),"false","true")
|eval save_date=strftime(save_date,"%Y-%m-%dT%H:%M:%S.%Q")
|eval submit_date=strftime(submit_date,"%Y-%m-%dT%H:%M:%S.%Q")
0 голосов
/ 19 января 2020

Вы захотите взглянуть на команду транзакция , которая помогает объединять события, основанные на поле, в вашем случае, PO

(index=xxx_prod host="foo.org" 5032 submit) OR (index=xxx_prod host="bar.org") | rex "id=PO:(?<PO>\d*)" | rex "savePO.*POId=(?<PO>\d*).*\"responseCode\":200" | transaction keeporphans=true PO | eval save_date = _time + duration | convert ctime(save_date) | table _time save_date duration

Вам необходимо проверить команды rex извлекаются правильно, а команда transaction, указанная выше, использует keeporphans, которая сохраняет события отправки, для которых нет соответствующего события сохранения.

...