I want to create a splunk alert and schedule it in such a way that it should bypass the particular timeframe (e.g it should not run between 9 PM to 12 AM).
How can do it?
1 1-20 * * *
That will work for all hours from 1AM - 8PM. I typically don't start things at the top of the hour to avoid resource contention with other hourly crons that may be installed on the system.
Edit: I double checked the syntax and had forgotten that a range can work as well.
View solution in original post
You can short-circuit the job during the blackout period by using addinfo and map for the blackout period that it is not supposed to run like this (extra steps for clarity):
| noop | stats count AS myHourMin | addinfo | eval myHourMin=tonumber(strftime(now(), "%H%M")) | eval blackout= if((myHourMin>2100),"YES","NO") | eval earliestMaybe=if((blackout=="NO"), info_min_time, now()) | map search="search earliest=$earliestMaybe$ latest=$info_max_time$ YOUR SEARCH HERE"
For the time range that it is not supposed to run, the search will generate an error.
Here are other similar questions with answers that should work for you (this answer is derived from the first one):