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

  1. The plugin sends metric snapshots at your configured interval
  2. The alert engine evaluates each snapshot against your active rules
  3. When a rule's conditions are met for the required duration, an incident is created
  4. Notifications are sent to your configured channels (Discord, webhooks)
  5. 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:

MetricKeyDescription
TPStpsTicks per second (target: 20.0)
MSPTmsptMilliseconds per tick
Memory %memory_pctHeap memory utilization percentage
Online Playersonline_playersCurrent player count
Entity Countentity_countTotal loaded entities

Available operators:

OperatorMeaning
ltLess than
gtGreater than
eqEqual to
neqNot equal to
lteLess than or equal to
gteGreater 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:

TemplateDescriptionDefault threshold
player_spikeSudden increase in concurrent players40 players
zero_playersServer has zero online players0 players
disconnect_burstMultiple players disconnect in a short window10 disconnects
recoveryServer TPS recovers above threshold after a dropTPS > 19

Preset thresholds can be customized when creating the rule.

Rule configuration options

SettingDescription
NameA descriptive label for the rule
DurationHow many seconds the condition must persist before triggering (durationSeconds)
WindowThe evaluation time window in seconds (windowSeconds)
CooldownMinimum seconds between repeated alerts for the same rule (default: 300 seconds / 5 minutes)
Severitywarning or critical -- affects how the incident is displayed and routed
EnabledToggle 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) or any (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:

TypeDescription
tps_dropTPS fell below the configured threshold
crashServer stopped sending data unexpectedly
memory_highMemory utilization exceeded the threshold
offlineServer is not reachable or not sending snapshots
player_spikeSudden increase in player count
zero_playersServer has no online players
disconnect_burstMultiple players disconnected in a short window
recoveryServer performance recovered after an incident
join_failurePlayers 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)

If you are setting up alerts for the first time, these are good starting points:

RuleMetricOperatorThresholdDurationSeverity
Low TPStpslt1860scritical
High MSPTmsptgt5060swarning
Server offline--------critical
High memorymemory_pctgt90120swarning
Player spikepreset--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 warning for early indicators and critical for 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.