Splunk Search

How to take time from subsearch to main search

wtaylor149
Explorer

I'm looking to take events from a subsearch, and find correlating events in a main search. The scenario is something like this:
subsearch will find an event of interest and pass certain fields to the outer search. notably the time of the event and hostname.

In the main search, go back ~5m from the "event time" from the subsearch. A basic example is what I'm working with now. Thanks for the help.

index=app_login sourcetype=logins login=success [search index="application" sourcetype="app:syslog" application=something | table _time,index,sourcetype,hostname,file_name,path | fields _time hostname] | table _time user app_text

Tags (1)
0 Karma

DalJeanis
Legend

In splunk, it's usually best to just specify the individual records you need connected together, rather than trying to do correlated searches.

You can read a full explanation/analogy why on this thread - https://answers.splunk.com/answers/561130/sql-analogy-for-my-log-search-join-two-tables-wher.html


It looks like you need these...

   search index="application" sourcetype="app:syslog" application=something hostname=* 
   | table _time hostname app_text 

...connected to these...

   index=app_login sourcetype=logins login=success hostname2=* 
   | table _time hostname2 user

So to accomplish that, you should do something like this...

   ((index="application" sourcetype="app:syslog" application=something hostname=*)
   OR ( index=app_login sourcetype=logins login=success hostname2=*))
   | rename COMMENT as "the above selects all the records that might be relevant on either side"

   | rename COMMENT as "adjust the name of the match field- host in this case - if it was different "
   | eval hostname=if(index=app_login,hostname2,hostname)

   | rename COMMENT as "cut down to the fields we really need. "
   | table _time index hostname user app_text 

   | rename COMMENT as "sort in order and then copy the most recent user name within 5 minutes (LastUser5m) "
   | rename COMMENT as "and all user names within 5 minutes (AllUsers5m) from the same host "
   | sort 0 _time 
   | streamstats current=t timewindow=300s last(user) as LastUser5m, values(user) as AllUsers5m by hostname

   | rename COMMENT as "kill unneeded records and mark any where no users were found"
   | where index!=app_login
   | fillnull value="not found" LastUser5m AllUsers5m
0 Karma

richgalloway
SplunkTrust
SplunkTrust

You don't need table in the subsearch.
What do you get when you run the subsearch by itself?

 index="application" sourcetype="app:syslog" application=something | fields _time hostname | format
---
If this reply helps you, Karma would be appreciated.
0 Karma
Get Updates on the Splunk Community!

Introducing the 2024 SplunkTrust!

Hello, Splunk Community! We are beyond thrilled to announce our newest group of SplunkTrust members!  The ...

Introducing the 2024 Splunk MVPs!

We are excited to announce the 2024 cohort of the Splunk MVP program. Splunk MVPs are passionate members of ...

Splunk Custom Visualizations App End of Life

The Splunk Custom Visualizations apps End of Life for SimpleXML will reach end of support on Dec 21, 2024, ...