Configuration
ServerPulse Configuration Guide
This guide covers all configuration options available in ServerPulse across all supported platforms: Bukkit/Paper, BungeeCord, Velocity, and Fabric.
Configuration Files Locations
Each platform stores its configuration in a different location:
- Bukkit/Paper:
plugins/ServerPulse/config.yml
- BungeeCord:
plugins/ServerPulse/config.yml
- Velocity:
plugins/serverpulse/config.yml
- Fabric:
config/serverpulse/config.yml
Common Configuration Structure
All platforms share the same core configuration structure with minor variations in the messages section:
metrics:
interval: 5 # Collection interval in seconds
influxdb:
url: http://localhost:8086 # InfluxDB API URL
org: my-org # Organization name
bucket: metrics_db # Bucket for storing metrics
token: my-token # API token (replace this!)
table: minecraft_stats # Measurement name in InfluxDB
tags:
server: "server-id" # Server identifier (change this for each server)
messages:
# Message configurations vary by platform (see below)
Platform-Specific Configurations
Bukkit/Paper Configuration
Default configuration with explanations:
metrics:
interval: 5
influxdb:
url: http://localhost:8086
org: my-org
bucket: metrics_db
token: my-token
table: minecraft_stats
tags:
server: "bed1" # Change to a unique identifier for your server
messages:
noPerms: "&7[&bServer&7Pulse] &7You don't have &bpermission &7to use this &bcommand&7."
reloadConfig: "&7[&bServer&7Pulse] &7Configuration &breloaded&7."
reloadConfigError: "&7[&bServer&7Pulse] &7Error &breloading &7configuration..."
noArgs: "&7[&bServer&7Pulse] &7You need to specify a &bcommand&7: &breload&7, &bstatus&7."
playerOnly: "&7[&bServer&7Pulse] &7This command can only be used by &bplayers&7."
noCommand: "&7[&bServer&7Pulse] &7This command is not &bavailable&7."
reloadConfigUsage: "&7[&bServer&7Pulse] &7Usage: &b/serverpulse reload&7."
statusConfigUsage: "&7[&bServer&7Pulse] &7Usage: &b/serverpulse status&7."
statusConnected: "&7[&bServer&7Pulse] &7Connected to &bInfluxDB&7."
statusNotConnected: "&7[&bServer&7Pulse] &7Not connected to &bInfluxDB&7."
BungeeCord Configuration
metrics:
interval: 5
influxdb:
url: http://localhost:8086
org: my-org
bucket: metrics_db
token: my-token
table: minecraft_stats
tags:
server: "bungeecord" # Change to a unique identifier for your proxy
messages:
noPerms: "&7[&bServer&7Pulse] &7You don't have &bpermission &7to use this &bcommand&7."
reloadConfig: "&7[&bServer&7Pulse] &7Configuration &breloaded&7."
reloadConfigError: "&7[&bServer&7Pulse] &7Error &breloading &7configuration..."
noArgs: "&7[&bServer&7Pulse] &7You need to specify a &bcommand&7: &breload&7, &bstatus&7."
playerOnly: "&7[&bServer&7Pulse] &7This command can only be used by &bplayers&7."
noCommand: "&7[&bServer&7Pulse] &7This command is not &bavailable&7."
reloadConfigUsage: "&7[&bServer&7Pulse] &7Usage: &b/serverpulse reload&7."
statusConfigUsage: "&7[&bServer&7Pulse] &7Usage: &b/serverpulse status&7."
statusConnected: "&7[&bServer&7Pulse] &7Connected to &bInfluxDB&7."
statusNotConnected: "&7[&bServer&7Pulse] &7Not connected to &bInfluxDB&7."
Velocity Configuration
metrics:
interval: 5
influxdb:
url: http://localhost:8086
org: my-org
bucket: metrics_db
token: my-token
table: minecraft_stats
tags:
server: "velocity1" # Change to a unique identifier for your proxy
messages:
usage: "&7[&bServer&7Pulse] &7Please use &b/serverpulsevelocity [status|reload]&7."
reloadConfig: "&7[&bServer&7Pulse] &7Configuration &breloaded&7."
reloadConfigError: "&7[&bServer&7Pulse] &7Error &breloading &7configuration..."
statusConnected: "&7[&bServer&7Pulse] &7Connected to &bInfluxDB&7."
statusNotConnected: "&7[&bServer&7Pulse] &7Not connected to &bInfluxDB&7."
Fabric Configuration
metrics:
interval: 5
influxdb:
url: http://localhost:8086
org: my-org
bucket: metrics_db
token: my-token
table: minecraft_stats
tags:
server: "fabric1" # Change to a unique identifier for your Fabric server
messages:
usage: "&7[&bServer&7Pulse] &7Please use &b/serverpulsevelocity [status|reload]&7."
reloadConfig: "&7[&bServer&7Pulse] &7Configuration &breloaded&7."
reloadConfigError: "&7[&bServer&7Pulse] &7Error &breloading &7configuration..."
statusConnected: "&7[&bServer&7Pulse] &7Connected to &bInfluxDB&7."
statusNotConnected: "&7[&bServer&7Pulse] &7Not connected to &bInfluxDB&7."
Metrics Settings
Main Options
metrics.interval
: How often metrics are collected and sent.- Value is in seconds.
- Recommended: 5-15 seconds.
- A lower value provides more granular data but may increase server impact.
InfluxDB Connection
Required Settings
-
metrics.influxdb.url
: The full URL of your InfluxDB v2 instance, including the port.- Format:
http://hostname:port
- The default port for InfluxDB is
8086
. - Use
localhost
if ServerPulse is running on the same machine as InfluxDB.
- Format:
-
metrics.influxdb.org
: The organization name you created during the InfluxDB setup.- Default used in documentation:
my-org
.
- Default used in documentation:
-
metrics.influxdb.bucket
: The name of the bucket where metrics will be stored.- This bucket must exist in your InfluxDB organization.
- Default used in documentation:
metrics_db
.
-
metrics.influxdb.token
: The API token for authentication.- This token must have write and read permissions for the specified bucket.
- Important: Treat this token like a password. Do not share it publicly.
-
metrics.influxdb.table
: The name for the measurement where your server data is stored in InfluxDB.- Default:
minecraft_stats
. - It is recommended to keep the default value unless you have a specific reason to change it.
- Default:
Tags System
Tags are used to label and organize your data, making it easy to filter and group in Grafana.
Server Tag
The metrics.tags.server
setting is crucial for identifying metrics from different servers. You must use a unique identifier for each server instance you monitor.
- For Bukkit/Paper servers:
yaml
metrics:
tags:
server: "survival-1"
- For BungeeCord proxies:
yaml
metrics:
tags:
server: "bungeecord1"
- For Velocity proxies:
yaml
metrics:
tags:
server: "velocity1"
- For Fabric servers:
yaml
metrics:
tags:
server: "fabric1"
Custom Tags
You can add any other custom tags under the metrics.tags
section to add more dimensions to your data.
metrics:
tags:
server: "survival-1"
region: "eu-west" # e.g., Geographic location
type: "survival" # e.g., Server gamemode
network: "main" # e.g., Network identifier
These tags are automatically applied to all metrics sent from the server and can be used for advanced filtering in your Grafana dashboards.
Messages Configuration
All platforms support customizing the in-game messages sent by the plugin's commands. Messages support standard Minecraft color codes using the &
symbol. These messages are reloaded when you use the reload command for your platform.
Platform-Specific Considerations
Bukkit/Paper Specific Settings
The Bukkit/Paper implementation automatically detects if you're running Paper (or a fork) and uses the native Bukkit.getTPS()
method for higher accuracy. If you're running standard Bukkit or Spigot, it falls back to a custom tick-monitoring implementation to calculate TPS.
BungeeCord/Velocity Specific Settings
Proxy implementations like BungeeCord and Velocity focus on network-level metrics. They do not report TPS or world-related data (entities, chunks), as these metrics are not applicable to a proxy. Instead, they provide accurate player counts and ping statistics for the entire network.
Fabric Specific Settings
The Fabric implementation includes a custom TPS retriever that monitors server tick durations to calculate 1-minute, 5-minute, and 15-minute averages. It also reports per-world data, including entity counts and loaded chunks, using the Fabric API.
Multi-Server Setup
When monitoring a network of servers, a consistent tagging strategy is key.
- Assign a unique
server
tag to each server, proxy, and mod instance. - Use custom tags like
network
ortype
to group related servers. - Point all ServerPulse configurations to the same InfluxDB instance.
- In Grafana, the pre-built dashboards are designed to filter by the
server
tag, allowing you to view metrics for each server individually.
Sample Multi-Server Config
Here's an example of how to configure ServerPulse in a network with multiple server types:
- Main Velocity Proxy (
velocity/plugins/serverpulse/config.yml
):
yaml
metrics:
tags:
server: "proxy-main"
type: "proxy"
network: "main-network"
- Bukkit Survival Server (
bukkit/plugins/ServerPulse/config.yml
):
yaml
metrics:
tags:
server: "survival-1"
type: "survival"
network: "main-network"
- Fabric Creative Server (
fabric/config/serverpulse/config.yml
):
yaml
metrics:
tags:
server: "creative-fabric"
type: "creative"
network: "main-network"
This structure allows you to filter metrics in Grafana by server type, specific server, or the entire network.
Verifying Configuration
After applying your configuration changes, restart your server and use the status command to verify the connection to InfluxDB.
- For Bukkit/Paper:
/serverpulse status
- For BungeeCord:
/serverpulsebungeecord status
(aliases:/sp
,/spb
) - For Velocity:
/serverpulsevelocity status
(alias:/spv
) - For Fabric:
/serverpulse status
All commands require the serverpulse.status
permission and will confirm whether the connection to InfluxDB is active.