Monitoring a TrinityCore server
Required Software
Statistic and metric logging in TrinityCore is implemented using two projects, InfluxDB, a time-series data storage and Grafana, graph and a dashboard builder for visualizing time series metrics.
Installing InfluxDB
- Download and install InfluxDB 1.x from https://influxdata.com/downloads/#influxdb for your platform. InfluxDB 2.x is not currently supported.
- Start InfluxDB
- Create a user and a database in InfluxDB using the Influx CLI and executing the commands below
CREATE DATABASE worldserver
CREATE USER grafana WITH PASSWORD 'grafana'
GRANT READ ON worldserver TO grafana- Edit the default retention policy to ensure the InfluxDB database doesn't grow too much.
USE worldserver
SHOW RETENTION POLICIESRefer to https://docs.influxdata.com/influxdb/v1.8/query_language/manage-database/ on how to manage retention policies.
Installing Grafana
- Download and install Grafana from http://docs.grafana.org/installation/
- Open the dashboard at http://localhost:3000
- Login with username admin and password admin (defaults can be changed in Grafana's .ini files)
- Go to Data Sources → + Add Data Source
- Name: Influx
- Type: InfluxDB
- Url: http://localhost:8086
- Access: Server
- Database: worldserver User: grafana Password: grafana
- Click on the + sign in the menu on the left called "Create" and select "Dashboard", then import each .json file in TrinityCore's /contrib/grafana clicking on "Upload JSON file"
Configuring TrinityCore
- Edit the worldserver.conf file
- Set Metric.Enable = 1
- Edit Metric.ConnectionInfo with connection details (e.g "127.0.0.1;8086;worldserver")
- Start worldserver, the dashboard should now start receiving values
Implemented ✅ planned ❌
Technical oriented
- I/O networking traffic:
- Packets sent ❌
- Packets received ✅
- Average ping ❌
- Traffic in ❌
- Traffic out ❌
- World session update time ✅
- Map update time ✅
- Map loads/unloads ✅
- MMap queries ✅
- Database async queries queued count ✅
- Server uptime ✅ (through world initialize and world shutdown events)
- Active connections ❌
- Queued connections ❌
Game oriented
- Players online ✅
- Logins per hour, per day, day of week, etc ✅
- Mails sent ❌
- Auction house usage ❌
- Character levels ❌
- Gold earn/spend ❌
- LFG queues ❌
