Splunk Search

Filtering A Heartbeat Call

inowland
New Member

I'm trying to create a query that can filter if a heartbeat has not occurred. Right now I have two separate queries I need to find a way to combine into one:

Query 1:
index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-10d latest=-30m
| stats values(deviceId) as SeenIds

This gives me Ids of devices I'm expecting to see

Query 2:
index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-30m
| stats values(deviceId) as LiveIds

This gives me Ids of devices that have sent a successful heartbeat in the last 30 minutes. The ideal way I would combine these is to filter out LiveIds from SeenIds, so I could get a list of devices that are potentially in trouble. How can I do so?

0 Karma
1 Solution

niyaz006
Path Finder

You can use subsearch to do that.

index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-10d latest=-30m
| search NOT
     [
     index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-30m
     | stats values(deviceId) as deviceId
     ]
| stats values(deviceId) as SeenIds

Note: Make sure that you use "deviceId" (your field name) and not as "LiveIds" so that the filtering works.

View solution in original post

0 Karma

niyaz006
Path Finder

You can use subsearch to do that.

index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-10d latest=-30m
| search NOT
     [
     index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-30m
     | stats values(deviceId) as deviceId
     ]
| stats values(deviceId) as SeenIds

Note: Make sure that you use "deviceId" (your field name) and not as "LiveIds" so that the filtering works.

0 Karma

inowland
New Member

That looks promising, but when I try it I get "Search Factory: Unknown search command 'index'."

0 Karma

inowland
New Member

The above was close, what actually worked after I played around with it was the following:

foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-10d latest=-30m | table deviceId | dedup deviceId
| search NOT
[search index=foo source="bar.log" sourcetype="baz" Device.statusReport earliest=-30m | table deviceId | dedup deviceId
]

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!

Monitoring AI Agents with Splunk Observability Cloud

Let’s say I’m running a travel planning AI app in production. A user asks for three concise hotel options in ...

[Puzzles] Solve, Learn, Repeat: Tiling

This puzzle (first published here) is based on finding groups of tessellated tiles (inspired by floor tiles I ...

SOK it to Me: Top 3 Benefits of Using Splunk Operator on Kubernetes that’ll Make ...

    Thursday, July 9, 2026  |  11:00AM–12:00PM PDT Duration: 1 hour (includes Q&A) Managing can feel like a ...