Я регистрирую время, которое требуется для выполнения внешних сервисных вызовов от различных клиентов в моем приложении.Это происходит как различные события в 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
в конец поиска, и яполучить таблицу, которая выглядит следующим образом:
Однако я хочу получить нечто похожее на это:
У кого-нибудь есть идеи, как соединить t1, t2 и t3 вместе в одном ряду с соответствующим идентификатором корреляции?
Я не очень хорошо сРазговор пока еще, так что я думаю, что может случиться так, что когда я делаю rex time1
, но это событие с rex time2
, оно устанавливает время1 как пустое / нулевое для этого конкретного события.Так что на самом деле он показывает то, что я говорю.Но так как это разные журналы событий, которые я пытаюсь объединить в одну строку с идентификатором корреляции связывания, я не уверен, как это сделать.