What's the best way to create a base search that will be generic/portable across all clients that will look over a variable period of 45days to identify which hosts have stop sending logs to Splunk? I want to scale it out for about 20,ooo apps. I want to keep the same SPL and use lookups and macros to filter the requirements for each client but, will not be in the base search.
A typical way to determine that something is NOT in Splunk, is to maintain a stored state of the source of truth, e.g. maintain a lookup file of hosts that have-in-the-past sent data to Splunk or hosts that should-always send data to Splunk.
How you maintain that will be somewhat dependent on how source of truth is maintained for each client.
Then if you have your source of truth, the SPL to check for that would be something like
| tstats count by host
| eval type="exists"
| append [
| inputlookup source_of_truth.csv
| eval type="required"
| stats values(type) as types by host
| where types="required" AND mvcount(types)==1
This will then give you a list of hosts that ONLY are found in the csv within the time window you specify. You will of course have to adapt that to fit your requirements.