Splunk Alerts Overview: Types, Conditions, Actions, and Throttling
Learn how Splunk alerts use searches, conditions, actions, and throttling to monitor security, application, web, and infrastructure events.
A Splunk alert is a saved search-based monitoring rule. It runs a search, evaluates the results against a condition, and performs an action when that condition is satisfied. Actions can include sending an email notification or running a script.
Alerts turn Splunk from a tool for viewing data into a tool for continuous operational, security, and application monitoring. An ad hoc search shows results when you run it. A report preserves a search for later viewing or sharing. An alert adds evaluation and response logic so that an event, count, trend, or pattern can produce an automated response.
Before designing alerts, review basic concepts such as fields, events, timestamps, aggregation, and the time range picker.
How a Splunk alert works
Every alert follows a basic lifecycle:
- A search runs against Splunk data.
- The search returns events, metrics, or an aggregate result.
- Splunk evaluates an alert condition against those results.
- If the condition is met, the alert fires.
- One or more alert actions execute.
- Optional throttling suppresses duplicate firings for similar results during a configured period.
Search execution -> Results -> Condition evaluation -> Alert trigger -> Action
|
-> Optional throttling
For example, a security team can alert on repeated failed logins, an operations team can detect a disk-full event, and an application team can monitor an increase in HTTP 404 responses.
Core components of an alert
| Component | Purpose | Configuration decision | Example |
|---|---|---|---|
| Search | Finds and analyzes events or metrics. | Choose the index, fields, filters, and aggregation. | Search web events where the HTTP status is 404. |
| Time range or window | Defines which data is evaluated. | Choose a historical interval or a real-time window. | Previous two hours or a moving ten-minute window. |
| Schedule or execution mode | Determines when the search runs. | Use periodic scheduled execution or continuous real-time evaluation. | Run every hour or evaluate incoming events continuously. |
| Trigger condition | Determines when results qualify for an alert. | Choose a count, threshold, trend, pattern, or individual result. | Fire when the count is greater than 50. |
| Action | Responds after the condition is met. | Select notification, automation, or both. | Send email to the web operations team. |
| Throttle period | Limits repeated firings. | Choose how long similar results should be suppressed. | Suppress the same host and error signature for 30 minutes. |
| Throttle identity fields | Defines what counts as similar. | Select fields that identify the incident or entity. | Group repeated errors by host and error_signature. |
Scheduled alerts
A scheduled alert is a historical search that executes at regular configured intervals. Each execution evaluates a defined, bounded time range in the past. The search is not continuously watching incoming data between executions.
Scheduled alerts are useful for periodic error-rate checks, hourly reporting thresholds, recurring compliance checks, and capacity monitoring. They are also useful when a small delay is acceptable and aggregate results are more important than immediate event-by-event response.
Schedule frequency and historical time range
The schedule and the search time range must be designed together. If a search runs every hour and evaluates the previous hour, each run can cover a distinct interval. If it runs every hour but evaluates the previous two hours, adjacent searches overlap. Overlap can provide resilience against late-arriving data, but it can also cause the same event to qualify more than once. Conversely, a gap between the schedule interval and the search range can leave data unevaluated.
Consider data arrival delay, time zones, event timestamps, and the consequences of overlap before selecting the interval. Throttling can reduce duplicate notifications, but it does not correct a poorly chosen search range.
Example: scheduled 404 threshold alert
Suppose a web team wants an alert when more than 50 HTTP 404 responses occur during a two-hour interval. A conceptual search might be:
index=web status=404
| stats count as error_count
| where error_count > 50
Configure the alert to use a two-hour historical time range, run on a regular schedule, and send an email when the result meets the threshold. The exact field names depend on the web data source. The important logic is to filter 404 events, aggregate the count, compare it with 50, and notify the responsible team.
Per-result alerts
A per-result alert is a real-time alert operating across all time. It evaluates incoming data and can trigger when an individual matching event arrives. The alert is appropriate when one event is important enough to require immediate attention.
For example, a server might emit a disk-full error. A per-result alert can match that event and notify an administrator immediately:
index=infra "disk full"
| fields host, message
Configure the real-time search to match disk-full events, trigger for each qualifying result, and notify the responsible administrator. You may also throttle by host and an error signature if the server repeats the same message.
Rolling-window alerts
A rolling-window alert is a real-time search evaluated over a continuously moving time interval. The window length is configured, and it advances as new events arrive. At any moment, the search considers the recent interval rather than one fixed historical period.
Rolling windows are suitable for burst detection, rate monitoring, and sequence-style behavior. They are useful when the relationship between events matters, such as several failures for one user or many denied connections from one source address.
Example: five failed logins in ten minutes
To detect a possible brute-force attempt, use a real-time search with a ten-minute rolling window. Identify failed authentication events, group them by user, and trigger when one user reaches five failures:
index=auth action=failure
| stats count as failure_count by user
| where failure_count >= 5
Configure the real-time window to ten minutes. The threshold applies to each user, not to all users collectively. A notification can be throttled by user so that one ongoing attack does not create a message for every additional failed login.
The window, grouping field, and threshold work together. A five-event threshold in ten minutes detects a different behavior from a five-event threshold in one hour. Grouping by user detects identity-specific activity; grouping by source address may be more appropriate for network attacks.
Comparison of Splunk alert types
| Alert type | Search mode | Time scope | How it triggers | Best use cases | Example |
|---|---|---|---|---|---|
| Scheduled alert | Historical | Fixed historical range on each run | Aggregate count, threshold, trend, or pattern in the completed search results | Periodic monitoring, compliance checks, capacity checks, and reporting thresholds | More than 50 404 responses in two hours |
| Per-result alert | Real-time | All time for continuously arriving data | Each individual matching event can trigger | Immediate response to critical event patterns | A disk-full event on a host |
| Rolling-window alert | Real-time | Continuously moving configured interval | Event frequency, aggregation, or behavior within the current window | Bursts, rates, correlations, and attack patterns | Five failed logins for one user in ten minutes |
Alert trigger conditions
Result-count conditions
A result-count condition fires when the search returns a selected number of results. This is useful for detecting whether any matching events exist or whether the result set has reached a specified size.
For example, a search that returns one or more disk-full events can trigger on a result count greater than zero. A search that returns one row per host can trigger when the number of affected hosts exceeds a limit.
Threshold conditions
A threshold is a numeric boundary used to trigger an alert. Common thresholds apply to counts, rates, percentages, or measured values.
index=web status=404
| stats count as error_count by host
| where error_count > 50
This condition applies separately to each host because the search groups results by host. Without grouping, the count would apply to the entire result set.
Trend and pattern conditions
Trend-based alerting detects a change over time rather than a single event. Examples include an abnormal increase in server errors, a sudden rise in denied firewall connections, or a rate that exceeds its normal behavior. These alerts generally require time bucketing, comparison with a baseline, or a rolling-window calculation.
Patterns can also involve multiple related events. For example, repeated authentication failures for one user within a short period are more meaningful than the same number of failures spread across unrelated users.
Individual-event conditions
An individual-event condition matches fields or text in one event. This is appropriate for high-severity events such as a disk-full message, a critical system error, or a security control notification.
Grouping results by meaningful entities
Use fields such as user, host, source, source address, or error code to make a condition meaningful. Grouping prevents unrelated events from being combined into one threshold and helps actions identify the affected entity.
index=firewall action=denied
| stats count as denied_count by src_ip
| where denied_count > 100
This pattern evaluates denied connections per source address, which is more useful for detecting a concentrated attack than counting all denied connections globally.
Alert actions
An alert action executes after the trigger condition is satisfied. A single alert can be designed for notification, automated response, or both.
- Email notification: Sends alert details to an administrator, analyst, or operations team. Include useful context such as the host, user, time range, count, and representative events.
- Script execution: Invokes a script for an automated response or integration. A script might create a ticket, call another system, or begin a containment workflow.
- Combined response: Sends an email while also invoking automation when the detection is sufficiently reliable and severe.
Actions should match detection quality and severity. A broad search that produces false positives should not automatically disable accounts or isolate systems. Start with notification when validating a detection, then add automation after testing its accuracy, permissions, failure behavior, and rollback procedure.
For implementation details, see Create an Alert and Create an Alert That Runs a Script.
Alert throttling and suppression
Repeated matching events can create duplicate notifications. A server may emit the same disk error every few seconds, a user may continue a failed-login attempt, or a firewall may record thousands of related denied connections.
Throttling limits repeat firings for similar qualifying results during a chosen period. The alert can continue finding matching data, while notifications or other actions are suppressed for results considered equivalent during the throttle period.
Choosing throttle identity fields
Select fields that identify the incident you want to treat as one ongoing condition:
hostfor repeated failures on the same server.userfor repeated authentication failures involving one identity.src_ipfor repeated firewall activity from one source address.- An error code or normalized error signature for the same failure type.
- A combination such as
hostanderror_signaturewhen both values are needed.
The tradeoff is between reducing noise and preserving visibility. Fields that are too broad may suppress distinct incidents. Fields that are too narrow may allow notification flooding. A throttle period that is too long can hide a new incident; one that is too short may not reduce duplicates effectively.
Alerting scenarios
| Scenario | Recommended alert type | Condition pattern | Suggested action | Throttling consideration |
|---|---|---|---|---|
| 404 error spike | Scheduled | Count 404 responses over a two-hour interval and compare with a threshold. | Email the web operations team. | Throttle by host or application if overlapping searches can detect the same spike. |
| Disk-full event | Per-result real-time | Match an individual disk-full event. | Notify the administrator; optionally invoke remediation. | Throttle by host and error signature to prevent repeated messages. |
| Failed login burst | Rolling-window real-time | Count failures by user in ten minutes and trigger at five. | Notify security operations or start an investigation. | Throttle by user, while considering source address as an additional identity. |
| Firewall attack activity | Rolling-window real-time | Group denied connections by source address and compare with a recent-interval threshold. | Notify security operations or integrate with response tooling. | Throttle by source address and destination context when appropriate. |
| Server system errors | Scheduled or real-time with throttling | Match critical errors or count them by host and error signature. | Email operations and optionally create an incident. | Suppress repeated alerts for the same host and signature without hiding other hosts. |
Application monitoring can also detect abandoned or empty shopping-cart patterns. The appropriate model depends on urgency: a periodic business-health check may use a scheduled alert, while a transactional failure requiring immediate investigation may use real-time evaluation.
Choosing the appropriate alert type
- Choose scheduled alerts for periodic evaluation of historical data, aggregate reporting, and checks where minutes of latency are acceptable.
- Choose per-result real-time alerts when one incoming event requires immediate attention or response.
- Choose rolling-window alerts when frequency, rate, bursts, or relationships among recent events are important.
| Design factor | Scheduled | Per-result | Rolling-window |
|---|---|---|---|
| Latency | Depends on schedule frequency and search completion. | Very low for matching events. | Low, while waiting for the threshold within the moving window. |
| Resource considerations | Runs discrete searches; overlapping ranges can increase work. | Continuously evaluates incoming events. | Maintains ongoing window and aggregation logic. |
| Noise characteristics | Can produce repeated aggregate alerts if windows overlap. | Can be noisy when routine events match. | Can reduce single-event noise but may be noisy if thresholds are too low. |
| Best question | What happened during this completed interval? | Did this important event just occur? | Is this behavior occurring unusually often right now? |
Conceptual alert configurations
Scheduled 404 error threshold
- Search web access events for HTTP 404 responses.
- Aggregate matching events over a two-hour historical interval.
- Run the search on a regular schedule.
- Trigger when the count exceeds 50.
- Send an email notification with the count and affected host or application.
Per-result disk-full alert
- Use a real-time search operating across all time.
- Match incoming disk-full error events.
- Trigger for each qualifying event.
- Notify the responsible administrator.
- Optionally throttle by host and error message or normalized error signature.
Rolling failed-login detection
- Use a real-time search with a ten-minute rolling window.
- Identify failed authentication events.
- Group or correlate events by user.
- Trigger when five failures occur for the same user during the window.
- Throttle repeated notifications for that user as appropriate.
Troubleshooting alert behavior
An alert fires repeatedly for the same ongoing issue
Common causes include missing throttling, a throttle period that is too short, or identity fields that are missing or too broad. Configure an appropriate throttle duration and identify similar results using fields such as host, user, or an error signature.
A scheduled alert misses events or reports unexpected counts
Review the schedule and historical time range together. Look for gaps, unintended overlap, late-arriving data, and a time range that does not match the intended monitoring period. Adjust the interval design before relying on throttling to hide duplicate results.
A real-time alert creates too much noise
The search may match routine events, use an overly broad condition, or trigger once per event when an aggregate threshold would be more appropriate. Narrow the search, add meaningful grouping, increase the threshold, select a rolling-window pattern, or add throttling.
A rolling-window login alert triggers for unrelated users
The failed events may be counted globally instead of by user, or the search may not preserve the field needed for correlation. Aggregate failed-login activity by user so the threshold is evaluated independently for each identity.
An expected notification or automation does not occur
Validate the search results and confirm that the alert condition was met. Then check whether the action is configured and enabled, whether throttling is suppressing the firing, and whether email delivery or script execution prerequisites are complete.
Alert design checklist
- Define the operational or security question the alert must answer.
- Confirm that the required events, timestamps, and fields are present.
- Choose historical scheduling, per-result real time, or a rolling window based on urgency and event pattern.
- Align the schedule with the historical range, or configure the rolling window deliberately.
- Group by the entity that matters, such as user, host, source address, or error code.
- Set a threshold that distinguishes meaningful activity from routine noise.
- Choose an action appropriate to the detection severity and confidence.
- Test notification and automation behavior safely.
- Configure throttling to suppress duplicates without hiding distinct incidents.
- Document ownership, expected response, and the reason for each threshold.
For related search construction, review Stats Command, Boolean Expressions, and Search Rules. To understand the difference between saved reports and alerts, see Reports Overview.
Exam-relevant notes
- A scheduled alert runs a historical search at configured intervals.
- A per-result alert can fire for an individual matching real-time event.
- A rolling-window alert evaluates a continuously advancing recent interval.
- An alert condition determines whether results qualify; an alert action defines what happens afterward.
- Throttling suppresses repeated firings for similar results; it does not replace a correct search or condition.
- Grouping by fields such as
userorhostmakes thresholds apply to meaningful entities rather than to an unrelated global total.