A python script that exports performance metrics from Pterodactyl Panel 1.x via the Client API, converts the data to the correct format and provides a prometheus target.
This can be used for time series monitoring of Pterodactyl game servers and visualization with Grafana.
Feel free to try this script and submit an issue if needed.
- Linux server (should run on Windows as well, but is only tested in a linux environment)
- Prometheus
- Python (3.10)
- Pterodactyl client API key
- Service account with read only is recommended
- You only need to set
Backup->Readas permission for the account to the server you want to monitor.
- Download the Egg JSON from
egg/egg-pterodactyl-exporter.jsonor the releases - Import the Egg into the Nest of your choice
- Create the server from the egg and fill in the required config values
- Run the server
- To install with pipx:
pipx install pterodactyl-exporter
- To install with pip (not recommended, could break system dependencies):
pip install pterodactyl-exporter
-
Create directory
pterodactyl_exporter. -
Create the config file
config.ymlin that directory (set the values as needed, it's recommended to use https):
host: panel.example.com
host_port: # This is the port of the panel (optional)
port: 9531 #Standard port for the exporter
api_key: APIKEY_APIKEYAPIKEYAPIKEY
https: true
ignore_ssl: false
server_list_type: owner
query_interval: 10 # Interval in seconds between each query to the Pterodactyl panel (default: 10)- Create systemd service
/etc/systemd/system/pterodactyl_exporter.service:
[Unit]
Description=Prometheus Server
After=network-online.target
[Service]
User=prometheus
Restart=on-failure
ExecStart=pterodactyl_exporter \
--config-file=/home/prometheus/pterodactyl_exporter/config.yml
[Install]
WantedBy=multi-user.target
-
Enable and start the service.
-
Add a job configuration:
- job_name: 'pterodactyl_exporter'
static_configs:
- targets: ['localhost:9531']
- To get the Grafana dashboard, import id
16575. Alternatively download the JSON file from the releases.
To show and hide servers from being monitored, just remove the read permission of the service account on that Server
-
Create a folder named
pterodactyl_exporter -
Download the config file from GitHub:
curl -fsSL -o config.yml https://raw.githubusercontent.com/LOENS2/pterodactyl_exporter/master/config.example.yml
-
Create a folder named
docker -
Download the
docker-compose.ymlinto that folder:
curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/LOENS2/pterodactyl_exporter/master/docker/docker-compose.yml
- Run the container:
docker-compose up -d
- Clone the project:
git clone https://github.com/LOENS2/pterodactyl_exporter.git
- Change to the cloned directory
cd pterodactyl_exporter
- Install dependencies:
python -m pip install -r requirements.txt
- Run with python:
python -m pterodactyl_exporter.pterodactyl_exporter --config-file=config.example.yml
You can view the output with (Time is UTC):
sudo journalctl -u pterodacyl_exporter.service -b --since "2024-12-14 13:45:27"
Post any stacktraces as an Issue.
With special thanks to @grimsi for helping me with docker.
© LOENS2 2023