Splunk Search

Help with Stats based on Conditional Multiple Values - foreach (potentially)

shashi319
New Member

Here is my raw data:

advisories=[Advisory@51046c2f[advisory=6,rule=LOGIN_3,passive=true], Advisory@2f9ea478[advisory=32,rule=LOGIN_30,passive=false], Advisory@795aab36[advisory=29,rule=LOGIN_26,passive=false]],passiveResponse=PassiveResultCollector@482f8caf[passivePrimary=LOGIN_3,passive=true,passiveAction=INTERDICT,passvieRules=[LOGIN_3],allRuleMarkers=[LOGIN_3]]];enter code here

index=sims_prod source=*/authentication-audit.log  earliest=-1d@d 
|where advisories!="[]"
|rex field=advisories "\[advisory=(?<advisory>\d+),rule=(?<rule>[^,]+),passive=(?<isPassive>[^\]]+)\]" max_match=10
|foreach advisory isPassive [eval activeAdvName=if(isPassive="false",advisory,"null")|eval activeAdvCount= if(isPassive="false",1,0)]
| stats sum(activeAdvCount) as ActiveAdvCount by activeAdvName

Current result:
activeAdvName ActiveAdvCount
29 1
32 1
6 1

activeAdvName ActiveAdvCount
29 1
32 1

and if want to get Passive Advisory Count, i should get
PassiveAdvName PassiveAdvCount
6 1

Tags (1)
0 Karma
1 Solution

sundareshr
Legend

See if this works for you

index=sims_prod source=*/authentication-audit.log  earliest=-1d@d 
| where advisories!="[]"
| rex field=advisories "\[advisory=(?<advisory>\d+),rule=(?<rule>[^,]+),passive=(?<isPassive>[^\]]+)\]" max_match=10
| eval z=mvzip(advisory,isPassive)
| mvexpand z
| rex field=z "(?<advisory>[^,]+),(?<isPassive>[^,]+)"
| eval activeAdvName=if(isPassive="false",advisory,"null")
|eval activeAdvCount= if(isPassive="false",1,0)]
| stats sum(activeAdvCount) as ActiveAdvCount by activeAdvName

View solution in original post

0 Karma

sundareshr
Legend

See if this works for you

index=sims_prod source=*/authentication-audit.log  earliest=-1d@d 
| where advisories!="[]"
| rex field=advisories "\[advisory=(?<advisory>\d+),rule=(?<rule>[^,]+),passive=(?<isPassive>[^\]]+)\]" max_match=10
| eval z=mvzip(advisory,isPassive)
| mvexpand z
| rex field=z "(?<advisory>[^,]+),(?<isPassive>[^,]+)"
| eval activeAdvName=if(isPassive="false",advisory,"null")
|eval activeAdvCount= if(isPassive="false",1,0)]
| stats sum(activeAdvCount) as ActiveAdvCount by activeAdvName
0 Karma

shashi319
New Member

It worked like a charm!!! Thank YOU..

0 Karma
Get Updates on the Splunk Community!

Leveraging Detections from the Splunk Threat Research Team & Cisco Talos

  Now On Demand  Stay ahead of today’s evolving threats with the combined power of the Splunk Threat Research ...

New in Splunk Observability Cloud: Automated Archiving for Unused Metrics

Automated Archival is a new capability within Metrics Management; which is a robust usage & cost optimization ...

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 ...