

So in this case we detected anomalies for the number of events on a server. Not saying what we have right now isn’t useful but I like to use the anomalies info to get more detailed information. I’d also check on the ones that stay at 0 to make sure the EventCounts are pretty close: Then look at the results to make sure where I see a 1 (we’ll later filter to only positive anomalies) it makes sense: | mv-expand TimeGenerated, EventCount, outliers For me to easily see where the anomalies were detected I’ll use mvexpand on any of the list that we’ve made: I won’t go into it in this article but you can adjust how sensitive the calculations. When I get to this point I always like to look at where the anomalies were detected and make sure that I would consider them anomalies. So the outliers filed will contain 3 valuesĪs you can see, we have some anomalies that got detected. | extend outliers=series_decompose_anomalies(EventCount) We have our query setup to detect the anomalies, we just need to pass the “EventCount” field to series_decompose_anomalies and create a new column with the results: | summarize EventCount=make_list(EventCount),TimeGenerated=make_list(TimeGenerated) by ComputerĪnd the output should look something like this: So what we’ll end up with is a single line for each server with a list of the TImeGenerated and EventCount fields. This will make a list of both the TimeGenerated field and the EventCount field. Below is the line you need to add to your query. Now we have everything ready to create the list in Kusto. This is the simplest step but essential if you want accurate results! Just add the following line to your query:
LINUX SYSTEM MONITOR NO ALERT DETECTED SERIES
So the output from just this query would look something like this:īefore we create a list or series we need to order the results by the time generated.

| summarize EventCount=count() by Computer, bin(TimeGenerated,30m) What the below query will do is filter to only event in the “System” log and then create a count of events for each server in 30 minute aggregates. Step one is to get the data that you want to detect anomalies on. To make this query even more useful we’ll take the list of servers that have had anomalies and chart them by eventid. We want to detect any anomalies where more events than normal happen on a server. We want to look at the number of events occurring on each of our servers in the System event log. I think the best way to show this is to walk through a scenario.
