Splunk Search

How to get duration for a transaction with multiple start and end points?

amunag439
Explorer

Hi,

I'm looking to get a duration for a transaction that has multiple pairs of StartsWith and EndsWith conditions.

Log Pair 1:
start: id=1111 msg=trying to get info...
end: id=1111 msg=returing info...

Log Pair 2:
start: id=2222 msg=calling service to get info...
end: id=2222 msg=got info from service...

A given transaction can have either pair 1 or pair 2 logs but they do not co-exists.
I have tried using the following query to get the time duration between the above events but I wasn't successfull.

my search | eval transaction_start=if(in(msg, "trying to get info", "calling service to get info"), _time, NULL), transaction_end=if(in(msg, "returing info", "got info from service"), _time, NULL) | stats earliest(transaction_start) AS start_time latest(transaction_end) AS end_time BY id | eval duration=tostring((end_time-start_time), "duration")

How do I get the time duration for these logs where start and end pair may vary?

0 Karma

solarboyz1
Builder

Do you need to use transactions? Are the id's re-used? If not, you might be able to just use stats:

your search | stats min(eval(match(msg,"(trying|calling service) to get",_time,NULL))) as start, max(eval(match(msg,"(got|returning) info",_time,NULL))) as stop, values(msg) as msg by id
0 Karma
Get Updates on the Splunk Community!

Splunk Observability for AI

Don’t miss out on an exciting Tech Talk on Splunk Observability for AI!Discover how Splunk’s agentic AI ...

Splunk Enterprise Security 8.x: The Essential Upgrade for Threat Detection, ...

Watch On Demand the Tech Talk on November 6 at 11AM PT, and empower your SOC to reach new heights! Duration: ...

Splunk Observability as Code: From Zero to Dashboard

For the details on what Self-Service Observability and Observability as Code is, we have some awesome content ...