Splunk Search

Use parametric time variable in source name

nicofantinato
Path Finder

Hello to everybody,

we are trying to set a search that makes a diff between two files of two different days. This is the working search:

 

| set diff
[| search index=myindex source="*2021-08-27*.csv"
| stats count by idx
| table idx]
[ search index=myindex source="*2021-08-26*.csv"
| stats count by idx
| table idx]
| join idx
[ search index=myindex source="*2021-08-27*.csv"]
| table "SITE ID",idx,"Title",FQDN,"Asset Primary Identifier","IP Address",Hostname,"Operating System", Port

 


However, we'd like to make it parametric, we'd like dates contained in source names are calculated automatically, so we tried to insert this:

 

| set diff 
    [ | eval todayFile=strftime(now(),"*%Y-%m-%d*.csv")
    | search index=myindex source=todayFile
    | stats count by idx 
    | table idx] 
    [ search index=myindex source="*2021-08-25*.csv" 
    | stats count by idx 
    | table idx] 
| join idx 
    [ search index=myindex source=todayFile] 
| table "SITE ID",idx,"Title",FQDN,"Asset Primary Identifier","IP Address",Hostname,"Operating System", Port

 

but it's not working, or, better, it doesn't return errors but it doesn't return correct results either.

How can we substitute source="*2021-08-25*.csv" with an instruction that dynamically inserts today date in our source filename in order to run the search every day?

Labels (3)
0 Karma
1 Solution

richgalloway
SplunkTrust
SplunkTrust

Rather than setting the lookup name in an eval, use a subsearch.  Try this query.

| set diff 
    [ | search index=myindex [ | makeresults 
        | eval source=strftime(now(),"*%Y-%m-%d*.csv") | return source ]
    | stats count by idx 
    | table idx] 
    [ search index=myindex source="*2021-08-25*.csv" 
    | stats count by idx 
    | table idx] 
| join idx 
    [ search index=myindex [ | makeresults 
        | eval source=strftime(now(),"*%Y-%m-%d*.csv") | return source ] ] 
| table "SITE ID",idx,"Title",FQDN,"Asset Primary Identifier","IP Address",Hostname,"Operating System", Port

 

---
If this reply helps you, Karma would be appreciated.

View solution in original post

richgalloway
SplunkTrust
SplunkTrust

Rather than setting the lookup name in an eval, use a subsearch.  Try this query.

| set diff 
    [ | search index=myindex [ | makeresults 
        | eval source=strftime(now(),"*%Y-%m-%d*.csv") | return source ]
    | stats count by idx 
    | table idx] 
    [ search index=myindex source="*2021-08-25*.csv" 
    | stats count by idx 
    | table idx] 
| join idx 
    [ search index=myindex [ | makeresults 
        | eval source=strftime(now(),"*%Y-%m-%d*.csv") | return source ] ] 
| table "SITE ID",idx,"Title",FQDN,"Asset Primary Identifier","IP Address",Hostname,"Operating System", Port

 

---
If this reply helps you, Karma would be appreciated.

nicofantinato
Path Finder

It works!

Many thanks

0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

Accelerate Splunk App Development with AI

  Accelerate Splunk App Development with AI   Register to Attend   Join our Tech Talk “Accelerate Splunk App ...

Meet the .conf26 AI Agent Buildathon Winners

At the .conf26 AI Agent Buildathon, Splunk users turned their operational expertise into working AI agents ...

Trusted Autonomy in the SOC: A Maturity Journey

AI is compressing attacker timelines and pushing SOC teams beyond human capacity thresholds. The next SOC ...