Как сделать так, чтобы переменные, связанные общим идентификатором корреляции, отображались в одной строке таблицы Splunk? - PullRequest
0 голосов
/ 12 июля 2019

Я регистрирую время, которое требуется для выполнения внешних сервисных вызовов от различных клиентов в моем приложении.Это происходит как различные события в Splunk, которые я ищу, а затем извлекаю время, затраченное на вызов.Для одного выполнения приложения будет использоваться несколько клиентов, и существует уникальный идентификатор корреляции, который связывает их всех вместе.

Представьте, что событие в Splunk может выглядеть следующим образом:

<RandomStuff, client1 time1: 3.2 , Random Stuff, correlation id: 250>

и тогда другое событие будет:

<RandomStuff, client2 time2: 2.7 , Random Stuff, correlation id: 250>

Таким образом, имя клиента (например, client2 time2) будет другим, но идентификатор корреляции будет одинаковым для конкретного выполнения.

Я выполняю поиск Splunk для time1, time2, timeN, а затем извлекаю идентификатор времени и корреляции:

<my search> 
| rex "time1: (?<t1>.*)" 
| rex "time2: (?<t2>.*)" 
| rex "time3: (?<t3>.*)" 
| rex "correlation_id: (?<corId>.*)

Это захватывает все соответствующие события и извлекает время (если они существуют -- поскольку в одном событии Splunk будет только один из трех клиентов, есть три разных события для time1, time2 и time3).

Затем я добавлю | table t1 t2 t3 corId в конец поиска, и яполучить таблицу, которая выглядит следующим образом:

table1

Однако я хочу получить нечто похожее на это:

enter image description here

У кого-нибудь есть идеи, как соединить t1, t2 и t3 вместе в одном ряду с соответствующим идентификатором корреляции?

Я не очень хорошо сРазговор пока еще, так что я думаю, что может случиться так, что когда я делаю rex time1, но это событие с rex time2, оно устанавливает время1 как пустое / нулевое для этого конкретного события.Так что на самом деле он показывает то, что я говорю.Но так как это разные журналы событий, которые я пытаюсь объединить в одну строку с идентификатором корреляции связывания, я не уверен, как это сделать.

1 Ответ

0 голосов
/ 12 июля 2019

Я думаю, что может случиться так, что когда я делаю rex time1, но это событие с rex time2, оно устанавливает time1 как пустое / нулевое для этого конкретного события.Так что на самом деле он показывает то, что я говорю.

Это правильно.Мы можем использовать команду stats для объединения строк.

<my search> 
| rex "time1: (?<t1>.*)" 
| rex "time2: (?<t2>.*)" 
| rex "time3: (?<t3>.*)" 
| rex "correlation_id: (?<corId>.*)"
| stats values(t1) as t1, values(t2) as t2, values(t3) as t3 by corId
| table t1 t2 t3 corId
...