Alerts
ServersPulse monitors your server metrics in real time and creates incidents when conditions you define are met. You configure these conditions through notification rules on each server's Rules tab.
How alerts work
- The plugin sends metric snapshots at your configured interval
- The alert engine evaluates each snapshot against your active rules
- When a rule's conditions are met for the required duration, an incident is created
- Notifications are sent to your configured channels (Discord, webhooks)
- When the condition clears, the incident is automatically resolved
Notification rules
Each server can have multiple notification rules. Rules are created and managed from the Rules tab on your server's dashboard page.
Rule types
Metric threshold rules
Define custom conditions based on server metrics. You choose the metric, operator, threshold, and how long the condition must persist before triggering.
Available metrics:
| Metric | Key | Description |
|---|---|---|
| TPS | tps | Ticks per second (target: 20.0) |
| MSPT | mspt | Milliseconds per tick |
| Memory % | memory_pct | Heap memory utilization percentage |
| Online Players | online_players | Current player count |
| Entity Count | entity_count | Total loaded entities |
Available operators:
| Operator | Meaning |
|---|---|
lt | Less than |
gt | Greater than |
eq | Equal to |
neq | Not equal to |
lte | Less than or equal to |
gte | Greater than or equal to |
Example: Alert when TPS is below 18 for 60 consecutive seconds.
Preset template rules
Pre-built rule templates for common scenarios. These use specialized evaluation logic that goes beyond simple metric thresholds:
| Template | Description | Default threshold |
|---|---|---|
player_spike | Sudden increase in concurrent players | 40 players |
zero_players | Server has zero online players | 0 players |
disconnect_burst | Multiple players disconnect in a short window | 10 disconnects |
recovery | Server TPS recovers above threshold after a drop | TPS > 19 |
Preset thresholds can be customized when creating the rule.
Rule configuration options
| Setting | Description |
|---|---|
| Name | A descriptive label for the rule |
| Duration | How many seconds the condition must persist before triggering (durationSeconds) |
| Window | The evaluation time window in seconds (windowSeconds) |
| Cooldown | Minimum seconds between repeated alerts for the same rule (default: 300 seconds / 5 minutes) |
| Severity | warning or critical -- affects how the incident is displayed and routed |
| Enabled | Toggle the rule on or off without deleting it |
Condition builder
For metric threshold rules, you can build complex conditions using the condition tree:
- Single condition -- One metric/operator/threshold check
- Condition groups -- Combine multiple conditions with
all(AND) orany(OR) logic - Nested groups -- Groups can contain other groups for complex logic
Example: Alert when TPS < 18 AND memory > 85%, or when MSPT > 50.
Spark auto-profiling
When enabled on a rule (sparkProfile: true), ServersPulse automatically requests a Spark performance profile when the rule triggers. This captures a detailed profiling snapshot at the moment of the incident, giving you immediate diagnostic data.
Spark profiling requires:
- The Spark plugin/mod installed on your Minecraft server
- A Starter plan or above
The resulting Spark profile URL is attached to the incident for easy access.
Webhook notifications
Rules can optionally include a webhook URL. When the rule triggers, ServersPulse sends an HTTP POST request to the URL with the incident details as JSON. This lets you integrate with external tools, custom dashboards, or automation systems.
Discord channel override
Individual rules can target a specific Discord channel by setting a channel ID, overriding the guild's default alert channel. This lets you route critical alerts to a dedicated channel while sending warnings elsewhere.
Incident types
When rules trigger (or the built-in detection engine fires), incidents are created with one of these types:
| Type | Description |
|---|---|
tps_drop | TPS fell below the configured threshold |
crash | Server stopped sending data unexpectedly |
memory_high | Memory utilization exceeded the threshold |
offline | Server is not reachable or not sending snapshots |
player_spike | Sudden increase in player count |
zero_players | Server has no online players |
disconnect_burst | Multiple players disconnected in a short window |
recovery | Server performance recovered after an incident |
join_failure | Players failed to join the server |
Severity levels
Each incident has a severity that affects display priority and notification urgency:
- Warning -- Performance degradation or notable events that may not require immediate action
- Critical -- Severe issues that likely need immediate attention (crashes, offline, extreme lag)
Viewing incidents
Incidents are listed on the Incidents tab of each server page. Each incident shows:
- The incident type and severity
- The rule that triggered it (if rule-based)
- When it started and when it resolved (if resolved)
- A descriptive message with relevant metric values
- A link to the Spark profile (if Spark profiling was triggered)
Recommended starter rules
If you are setting up alerts for the first time, these are good starting points:
| Rule | Metric | Operator | Threshold | Duration | Severity |
|---|---|---|---|---|---|
| Low TPS | tps | lt | 18 | 60s | critical |
| High MSPT | mspt | gt | 50 | 60s | warning |
| Server offline | -- | -- | -- | -- | critical |
| High memory | memory_pct | gt | 90 | 120s | warning |
| Player spike | preset | -- | 40 | -- | warning |
Reducing alert noise
- Use sustained durations -- Require conditions to persist for 30-120 seconds to filter out momentary spikes
- Set appropriate cooldowns -- The default 5-minute cooldown prevents repeated alerts for the same ongoing issue
- Split severity levels -- Use
warningfor early indicators andcriticalfor things that need immediate response - Disable during maintenance -- Toggle rules off or use the Discord bot's silence command before planned restarts
- Review after incidents -- After each major incident, check whether your rules triggered appropriately and adjust thresholds
Contributors
Thanks to everyone who keeps this docs area accurate.