Нужен запрос Splunk для поиска общих элементов между двумя полями, когда каждое поле является списком - PullRequest
0 голосов
/ 07 июня 2018

У меня каждое событие в виде объекта JSON ниже, который индексируется Splunk.Как можно получить запрос Splunk, чтобы я обнаружил, что все такие сбои присутствуют в массивах "failed" и "passed"?

"output":{
          "date" : "21-09-2017"
          "failed": [ "fail_1", **"fail_2"** ],
          "passed": [ "pass_1", "pass_2" , **"fail_2"**]
}

Для приведенного выше примера результат будет "fail_2".

1 Ответ

0 голосов
/ 09 июня 2018

Вы можете сделать что-то вроде:

| makeresults
| eval x = "{\"output\":{\"date\" : \"21-09-2017\",\"failed\": [ \"fail_1\", \"fail_2\"],\"passed\": [ \"pass_1\", \"pass_2\" , \"fail_2\"]}}"
| eval x = mvappend(x,"{\"output\":{\"date\" : \"21-09-2017\",\"failed\": [ \"f_1\", \"f_2\"],\"passed\": [ \"f_1\", \"pass_2\" , \"f_2\"]}}")
| mvexpand x
| streamstats count as id 
| spath input=x
| rename "output.failed{}" as failed, "output.passed{}" as passed, "output.date" as date
| mvexpand failed
| eval common_field = if(isnotnull(mvfind(passed, failed)),failed,null)
| stats values(date) as date, values(failed) as failed, values(passed) as passed, values(common_field) as common_field by id

Пример содержит 2 примера журнала событий, где неудачные и пройденные имеют общие значения.streamstats затем используется для назначения уникального идентификатора каждому событию, поскольку я не видел уникальный идентификатор в вашем примере.spath разбирает объект json на поля.Как только это будет сделано, mvexpand создаст одну строку для каждого значения с ошибкой.mvfind затем используется для поиска значений ошибочного поля, которые соответствуют любому из значений переданного поля.Связанные строки затем снова объединяются с использованием уникального назначенного идентификатора.

...