Splunk Search

Moving fields from a subsearch

balcv
Contributor

I have a search and subsearch that is working as required but there is a field in the subsearch that I want to display in the final table output but is not a field to be searched on.

index=aruba sourcetype="aruba:stm" "*Denylist add*" OR "*Denylist del*"
| eval stuff=split(message," ") 
| eval mac=mvindex(stuff,4) 
| eval mac=substr(mac,1,17) 
| eval denyListAction=mvindex(stuff,3) 
| eval denyListAction= replace (denyListAction,":","") 
| eval reason=mvindex(stuff,5,6) | search mac="*:*"
    [ search index=main host=thestor Username="*adgunn*" 
    | dedup Client_Mac
    | eval Client_Mac = "*" . replace(Client_Mac,"-",":") . "*"
    | rename Client_Mac AS mac
    | fields mac ]
| dedup mac,denyListAction,reason
| table _time,mac,denyListAction,reason

What I want is for the value held in field Username to be included in the table command of the outer search.  How do I pass it from the subsearch to be used in the table command and not used as part of the search?

Thanks.

Labels (1)
0 Karma
1 Solution

yuanliu
SplunkTrust
SplunkTrust

The most common way to handle this is to use append instead.  The following example uses eventstats.

index=aruba sourcetype="aruba:stm" "*Denylist add*" OR "*Denylist del*"
| eval stuff=split(message," ") 
| eval mac=mvindex(stuff,4) 
| eval mac=substr(mac,1,17) 
| eval denyListAction=mvindex(stuff,3) 
| eval denyListAction= replace (denyListAction,":","") 
| eval reason=mvindex(stuff,5,6)
| dedup mac,denyListAction,reason
| append
    [ search index=main host=thestor Username="*adgunn*" 
    | dedup Client_Mac
    | eval Client_Mac = "*" . replace(Client_Mac,"-",":") . "*"
    | rename Client_Mac AS mac
    | fields mac Username ]
| eventstats values(UserName) as UserName by mac
| where isnotnull(UserName)
| table _time,mac,denyListAction,reason,UserName

 

View solution in original post

balcv
Contributor

Thanks @bowesmana .  I had a fleeing it was not going to be as easy as I had hoped.
I'm rethinking my approach to see if I can find a way to achieve what I need.
Thanks again.

0 Karma

yuanliu
SplunkTrust
SplunkTrust

The most common way to handle this is to use append instead.  The following example uses eventstats.

index=aruba sourcetype="aruba:stm" "*Denylist add*" OR "*Denylist del*"
| eval stuff=split(message," ") 
| eval mac=mvindex(stuff,4) 
| eval mac=substr(mac,1,17) 
| eval denyListAction=mvindex(stuff,3) 
| eval denyListAction= replace (denyListAction,":","") 
| eval reason=mvindex(stuff,5,6)
| dedup mac,denyListAction,reason
| append
    [ search index=main host=thestor Username="*adgunn*" 
    | dedup Client_Mac
    | eval Client_Mac = "*" . replace(Client_Mac,"-",":") . "*"
    | rename Client_Mac AS mac
    | fields mac Username ]
| eventstats values(UserName) as UserName by mac
| where isnotnull(UserName)
| table _time,mac,denyListAction,reason,UserName

 

bowesmana
SplunkTrust
SplunkTrust

You would either have to include that subsearch part as an OR in the outer search and munge the data so you could join the data sets with stats somehow, or create a lookup through a saved search on a regular basis (if it changes) and use the lookup to filter rather than the subsearch, then you'd have anything you need

Get Updates on the Splunk Community!

Join Us for Splunk University and Get Your Bootcamp Game On!

If you know, you know! Splunk University is the vibe this summer so register today for bootcamps galore ...

.conf24 | Learning Tracks for Security, Observability, Platform, and Developers!

.conf24 is taking place at The Venetian in Las Vegas from June 11 - 14. Continue reading to learn about the ...

Announcing Scheduled Export GA for Dashboard Studio

We're excited to announce the general availability of Scheduled Export for Dashboard Studio. Starting in ...