Splunk Search

How to check if the field exists and extract the value?

avtandil
Engager

Hi.
I need to use IP Address in iplocation, but O365 returns 2 different logs. one with "ClientIP" field and others with "ClientIPAddress" field.
The issue is that in the logs only one of them exist. If there was null value for one of them, then it would be easy, I would have just checked for null value.

Search looks like this:
mysearch
|eval IPs= if(ClientIP "exists", ClientIP, ClientIPAddress)
|iplocation IPs
|stats ...

I can't do the "ClientIP exists" part. maybe this is not correct and other approach should be used. Does anyone know the solution?

0 Karma
1 Solution

horsefez
Motivator

Hi @avtandil,

there is a SPL function called isnull() and isnotnull() you can use these together with the if function to check if fields/fieldvalues exist or not.

A solution to your problem could look like this:

| eval IP=if(isnotnull(ClientIP), ClientIP, ClientIPAddress)

View solution in original post

horsefez
Motivator

Hi @avtandil,

there is a SPL function called isnull() and isnotnull() you can use these together with the if function to check if fields/fieldvalues exist or not.

A solution to your problem could look like this:

| eval IP=if(isnotnull(ClientIP), ClientIP, ClientIPAddress)

avtandil
Engager

Hi pyro_wood.

Thanks, I tried that yesterday and did not worked.

At last, I found that I had a fault in dedup function, it was not the eval function that was not working.

Thanks again.

0 Karma
Get Updates on the Splunk Community!

.conf24 | Day 0

Hello Splunk Community! My name is Chris, and I'm based in Canberra, Australia's capital, and I travelled for ...

Enhance Security Visibility with Splunk Enterprise Security 7.1 through Threat ...

 (view in My Videos)Struggling with alert fatigue, lack of context, and prioritization around security ...

Troubleshooting the OpenTelemetry Collector

  In this tech talk, you’ll learn how to troubleshoot the OpenTelemetry collector - from checking the ...