Splunk Search

Multi sourcetype search for extracted value

whipstash
Engager

I am having some issues getting this to work correctly. It does not return all the results. I have different records in different sourcetypes under the same index.

sourcetypeA

eventID = computerName.sessionID

infoIWant1 = someinfo1

infoIWant2 = someinfo2

 

SourcetypeB's events are broken into events that I need to correlate.

sourcetypeB

event1-------------------------------------------------------

sessionID= sessionNo1

direction=receive

-----------------------------------------------------------------

 

event2--------------------------------------------------------

sessionID=sessionNo1

direction=send

-----------------------------------------------------------------

 

I attempted the below search using the transaction command to correlate the records in sourcetypeB.

index=INDEX sourcetype=sourcetypeA
| rex field=eventID "\w{0,30}+.(?<sessionID>\d+)"
| do some filter on infoIWant fields here
| join type=inner sessionID
[ search index=INDEX sourcetype=sourcetypeB
| transaction sessionID
| where eventcount==2
| fields sessionID duration ]
|  chart count by duration
Labels (5)
0 Karma

whipstash
Engager

Thanks for your help Giusepe. This is helpful for getting the duration. However, I would also like to table the results from filtering the events in sourcetypeA and having the duration. This solution does not seem to merge the two resulting searches.

ex.

table _time computerName sessionID filteredInfoIWant1 filteredInfoIwant2 duration

0 Karma

gcusello
SplunkTrust
SplunkTrust

Hi @whipstash ,

add to the stats command, using the values option9 all the fields you need from both the searches:

index=INDEX sourcetype=sourcetypeA
| rex field=eventID "\w{0,30}+.(?<sessionID>\d+)"
| do some filter on infoIWant fields here
| append [ search 
     index=INDEX sourcetype=sourcetypeB
     | stats 
          count AS eventcount
          earliest(_time) AS earliest 
          latest(_time) AS latest 
          BY sessionID
     | eval duration=latest-earliest
     | where eventcount=2
     | fields sessionID duration field3 field4 ]
| stats 
     values(eventID) AS eventID
     values(duration) AS duration
     values(field1) AS field1
     values(field2) AS field2
     values(field3) AS field3
     values(field4) AS field4
     values(count) AS count
     BY sessionID

Ciao.

Giuseppe

 

0 Karma

gcusello
SplunkTrust
SplunkTrust

Hi @whipstash ,

don't use join command that's a very slow command, use a different approach:

index=INDEX sourcetype=sourcetypeA
| rex field=eventID "\w{0,30}+.(?<sessionID>\d+)"
| do some filter on infoIWant fields here
| append [ search 
     index=INDEX sourcetype=sourcetypeB
     | stats 
          count AS eventcount
          earliest(_time) AS earliest 
          latest(_time) AS latest 
          BY sessionID
     | eval duration=latest-earliest
     | where eventcount=2
     | fields sessionID duration ]
| stats 
     values(eventID) AS eventID
     values(duration) AS duration
     values(count) AS count
     BY sessionID

Please adapt this approach to your real situation.

Ciao.

Giuseppe

0 Karma
Career Survey
First 500 qualified respondents will receive a $20 gift card! Tell us about your professional Splunk journey.

Can’t make it to .conf25? Join us online!

Get Updates on the Splunk Community!

Take Action Automatically on Splunk Alerts with Red Hat Ansible Automation Platform

 Are you ready to revolutionize your IT operations? As digital transformation accelerates, the demand for ...

Calling All Security Pros: Ready to Race Through Boston?

Hey Splunkers, .conf25 is heading to Boston and we’re kicking things off with something bold, competitive, and ...

Beyond Detection: How Splunk and Cisco Integrated Security Platforms Transform ...

Financial services organizations face an impossible equation: maintain 99.9% uptime for mission-critical ...