Splunk Search

Is it possible to compare equality of two fields at the root search without using | search, | where, or | eval?

responsys_cm
Builder

I'm trying to work around the limitations of data model root searches not supporting pipes.

Is there any way to do see if fieldX=fieldY at the root search level or does Splunk always treat the "fieldY" as a string?

Tags (1)
0 Karma

DalJeanis
Legend

See if you can manage that with a tstats command.

Something like...

  | tstats max(_time) where index=foo sourcetype=qualys by dest

I doubt if dest is an index time field, so it might not be available to tstats.

If not, then if you just want the most recent _time, then try dedup

  index=foo sourcetype=qualys earliest=-30d@d | dedup dest  

With regard to your underlying question,

1) search treats the right side of an = as a literal, whereas where evaluates both sides.

2) There is no way to compare two fields before the first pipe.

0 Karma

zonistj
Path Finder

Data models can be interacted with in multiple ways. Can you provide the search that you're working on? Also, is the data model accelerated?

0 Karma

responsys_cm
Builder

The search needs to use something like eventstats to find the most recent timestamp for the events, in this case the last time a destination IP was scanned by a vulnerability scanner. But searches with pipes aren't supported by data models.

So, I could put the most recent scan time for each IP in a lookup table and create an automatic lookup for it. That way I could have a top level search that says _time=last_scan_time if I can get the last_scan_time to be treated as a field like with WHERE rather than a string...

0 Karma

zonistj
Path Finder

I'd like to help you, but I need more information. There are ways to search data models using pipes.

For example, we can use tstats to search the authentication data model and use trailing pipe commands:

| tstats `summariesonly` values(Authentication.app) AS app count from datamodel=Authentication.Authentication WHERE Authentication.user!="unknown" by Authentication.action,Authentication.user 
| `drop_dm_object_name("Authentication")`
| eval success=if(action="success",count,0),failure=if(action="failure",count,0)
| stats values(app) as app,sum(failure) as failure,sum(success) as success by user
| where success > 0
| xswhere failure from failures_by_src_count_1d in authentication is above medium
| sort - failure
| eval failure = tostring('failure',"commas"), success = tostring('success',"commas")

We can also use the "|from datamodel" syntax:

| from datamodel:"Authentication"."Authentication" 
| search user="malicious_user" errorCode="AccessDenied" 
| stats count by app

Can you provide some additional info about what data model you're working with, and maybe a sample of the search you have so far?

0 Karma

responsys_cm
Builder

I'm not trying to search the data model, I am trying to feed data into it. I want to run something like this:

sourcetype=qualys earliest=-30d@d | eventstats max(_time) AS last_scan by dest | where _time=last_scan

That will give me the most recent scan of all hosts over the last 30 days. I want that in a data model since tscollect and namespaces aren't supported on search head clusters.

0 Karma

zonistj
Path Finder

I understand now. Thank you for the clarification.

I think your best bet is to feed events into the data model and then create a separate search or report that pulls out the latest scan events. I'll try a few things to see if I can get it to work and let you know.

0 Karma
Get Updates on the Splunk Community!

More Ways To Control Your Costs With Archived Metrics | Register for Tech Talk

Tuesday, May 14, 2024  |  11AM PT / 2PM ET Register to Attend Join us for this Tech Talk and learn how to ...

.conf24 | Personalize your .conf experience with Learning Paths!

Personalize your .conf24 Experience Learning paths allow you to level up your skill sets and dive deeper ...

Threat Hunting Unlocked: How to Uplevel Your Threat Hunting With the PEAK Framework ...

WATCH NOWAs AI starts tackling low level alerts, it's more critical than ever to uplevel your threat hunting ...