Alerting

How to detect missing logs from any host domain joined?

corti77
Contributor

Hi,

By chance, I discovered that a power user with admin rights disabled sysmon agent and splunk forwarder on his computer to gain some extra CPU for his daily tasks. To react quicker to this type of "issue" in the future, I would like to have some alerts in splunk informing me whenever any host, initially domain joined workstations and servers, might have stopped reporting events.

Did someone implement something like this already? any good article to follow?

I plan to create a lookup table using ldapsearch and then, an alert detecting which hosts from that table are not present in a basic listing host search on sysmon index for example.

Any other better or simpler approach?

 

many thanks

Labels (1)
Tags (3)
0 Karma
1 Solution

gcusello
SplunkTrust
SplunkTrust

Hi @corti77,

if you have a list of monitored hosts you could run a search like the following:

| tstats count WHERE index=* BY host
| append [ | inputlookup perimeter.csv | eval count=0 | fields host count ]
| stats sum(count) AS total BY host
| where total=0

if you don't have this list, you can identify the hosts that sent logs in the last 30 days and not in the last hour:

| tstats count latest(_time) AS _time WHERE index=* BY host
| eval period=if(_time>now()-3600,"last_Hour","Previous")
| stats dc(period) AS period_count values(period) AS period BY host
| where period_count=1 AND period="Previous"

Ciao.

Giuseppe

View solution in original post

corti77
Contributor

Thanks a lot @gcusello !

I just created a search to create that CSV used in your query.

| ldapsearch domain=default search="(objectClass=computer)" 
| table name 
| rename name as host 
| outputlookup append=false monitored_hosts.csv

and I run your query using the monitored_hosts.csv.
It works flawless! thanks once again.

 

0 Karma

gcusello
SplunkTrust
SplunkTrust

Hi @corti77,

if you have a list of monitored hosts you could run a search like the following:

| tstats count WHERE index=* BY host
| append [ | inputlookup perimeter.csv | eval count=0 | fields host count ]
| stats sum(count) AS total BY host
| where total=0

if you don't have this list, you can identify the hosts that sent logs in the last 30 days and not in the last hour:

| tstats count latest(_time) AS _time WHERE index=* BY host
| eval period=if(_time>now()-3600,"last_Hour","Previous")
| stats dc(period) AS period_count values(period) AS period BY host
| where period_count=1 AND period="Previous"

Ciao.

Giuseppe

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!

Announcing Modern Navigation: A New Era of Splunk User Experience

We are excited to introduce the Modern Navigation feature in the Splunk Platform, available to both cloud and ...

Observability Simplified: Combining User Experience, Application Performance & ...

Tech Talk Observability Simplified: Combining User Experience, Application Performance & Network ...

Event Series May & June: From Network Visibility to Service Intelligence

Unifying the Network: Moving from Alert Noise to Service Intelligence with Splunk ITSI In today’s hybrid ...