Skip to content

6. Custom dashboards

Vincenzo Reina edited this page Apr 21, 2025 · 7 revisions

Custom Dashboards

ServerPulse includes pre-configured Grafana dashboards, but you can create custom dashboards to better suit your needs. This guide covers dashboard customization and creation.

Default Dashboards

ServerPulse provides three default dashboards:

  1. Server Metrics Dashboard

    • Memory usage (available/used)
    • Disk space (total/usable)
    • TPS (Ticks Per Second)
    • Online players count
  2. World Statistics Dashboard

    • Entity counts per world
    • Loaded chunks per world
  3. Player Ping Dashboard

    • Minimum ping
    • Maximum ping
    • Average ping

Creating New Dashboards

Step-by-Step Guide

  1. Create Dashboard

    • Click '+ New' in the sidebar
    • Select 'New Dashboard'
    • Click 'Add visualization'
  2. Configure Data Source

    • Select 'InfluxDB_v2_Flux'
    • Set bucket to 'metrics_db'
    • Use 'minecraft_stats' as measurement
  3. Create Basic Query

    from(bucket: "metrics_db")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r._measurement == "minecraft_stats")
      |> filter(fn: (r) => r._field == "tps_1m")
      |> filter(fn: (r) => r.server == "your-server")
    
  4. Customize Panel

    • Set title
    • Choose visualization type
    • Adjust time range
    • Set refresh interval

Panel Types and Examples

Time Series Graph

Perfect for tracking metrics over time:

from(bucket: "metrics_db")
  |> range(start: v.timeRangeStart)
  |> filter(fn: (r) => r._field == "tps_1m")
  |> aggregateWindow(every: v.windowPeriod, fn: mean)

Stat Panel

Good for current values:

from(bucket: "metrics_db")
  |> range(start: v.timeRangeStart)
  |> filter(fn: (r) => r._field == "players_online")
  |> last()

Gauge

Useful for resource utilization:

from(bucket: "metrics_db")
  |> range(start: v.timeRangeStart)
  |> filter(fn: (r) => r._field == "used_memory")
  |> last()

Advanced Features

Adding Variables

  1. Click the dashboard settings icon (⚙️)
  2. Select 'Variables'
  3. Click 'Add variable'
  4. Common variable types:
    • Server selector
    • Time range picker
    • World selector

Setting Thresholds

  1. Edit panel
  2. Go to 'Field' tab
  3. Add threshold:
    • Green: > 18 TPS
    • Yellow: 15-18 TPS
    • Red: < 15 TPS

Panel Links

  1. Edit panel
  2. Go to 'Panel links' section
  3. Add links to related dashboards or external docs

Common Metrics Queries

Memory Usage

from(bucket: "metrics_db")
  |> range(start: v.timeRangeStart)
  |> filter(fn: (r) => r._field == "used_memory" or r._field == "available_memory")
  |> aggregateWindow(every: v.windowPeriod, fn: mean)

Entity Count by World

from(bucket: "metrics_db")
  |> range(start: v.timeRangeStart)
  |> filter(fn: (r) => r._field == "entities_count")
  |> group(columns: ["world"])

Player Count Trends

from(bucket: "metrics_db")
  |> range(start: v.timeRangeStart)
  |> filter(fn: (r) => r._field == "players_online")
  |> timeShift(duration: 1d)
  |> window(every: 1h)

Best Practices

  1. Organization

    • Use descriptive panel titles
    • Group related metrics together
    • Add documentation where needed
  2. Performance

    • Keep time ranges reasonable
    • Use efficient queries
    • Avoid too many panels per dashboard
  3. Usability

    • Add helpful tooltips
    • Use consistent colors
    • Include proper units
    • Set appropriate refresh intervals

Related Pages

  • [Installation(https://github.com/renvins/serverpulse/wiki/installation)]
  • [Configuration(https://github.com/renvins/serverpulse/wiki/configuration)]
  • [Metrics Reference(https://github.com/renvins/serverpulse/wiki/metrics)]
  • [Alert System(https://github.com/renvins/serverpulse/wiki/alerts)]
  • [Docker Infrastructure(https://github.com/renvins/serverpulse/wiki/docker)]
Clone this wiki locally