Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ruscalworld/fabric-exporter
Fabric mod that adds a Prometheus exporter with general metrics of your server
https://github.com/ruscalworld/fabric-exporter
fabricmc-mod grafana-dashboard minecraft prometheus-exporter
Last synced: about 1 month ago
JSON representation
Fabric mod that adds a Prometheus exporter with general metrics of your server
- Host: GitHub
- URL: https://github.com/ruscalworld/fabric-exporter
- Owner: ruscalworld
- License: mit
- Created: 2021-05-24T17:12:52.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-08T13:24:47.000Z (3 months ago)
- Last Synced: 2024-10-01T08:21:46.269Z (about 2 months ago)
- Topics: fabricmc-mod, grafana-dashboard, minecraft, prometheus-exporter
- Language: Java
- Homepage: https://modrinth.com/mod/fabricexporter
- Size: 230 KB
- Stars: 33
- Watchers: 1
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FabricExporter
![](https://img.shields.io/github/license/ruscalworld/fabric-exporter)
![](https://img.shields.io/github/actions/workflow/status/ruscalworld/fabric-exporter/gradle.yml?branch=master)Fabric mod that adds a Prometheus exporter with general metrics of your server.
![Grafana Dashboard](https://grafana.com/api/dashboards/14492/images/10444/image)
---
It's a server-side mod that exposes metrics of your Fabric server in [Prometheus](https://prometheus.io) format.
So, it requires you to have at least Prometheus installed to collect provided metrics.
I recommend also using [Grafana](https://grafana.com) to visualize data.If you want to get TPS and MSPT metrics, you should also install [Spark](https://spark.lucko.me) as mod for your Fabric server.
## Exposed metrics
Here is a list of metrics that are collected by FabricExporter.
* Metrics collected by Minecraft doesn't require anything, but may cause errors when running on old Minecraft versions
* Metrics collected by [Spark](https://spark.lucko.me) require Spark to be installedYou can disable any of these metrics in [config](src/main/resources/config/exporter.properties).
| Prometheus name | Description | Config property | Collected by |
|---------------------------------|-----------------------------------------------------------------------------------------|------------------------------|-------------------|
| `minecraft_loaded_chunks` | Amount of currently loaded chunks on server | `enable-loaded-chunks` | Minecraft |
| `minecraft_total_loaded_chunks` | Amount of total loaded chunks on server | `enable-total-loaded-chunks` | Minecraft |
| `minecraft_mspt` | Count of milliseconds per tick (MSPT) | `enable-mspt` | Spark |
| `minecraft_tps` | Count of ticks per second (TPS) | `enable-tps` | Spark |
| `minecraft_players_online` | Amount of currently online players on your server | `enable-players-online` | FabricExporter |
| `minecraft_entities` | Amount of currently loaded entities on your server | `enable-entities` | FabricExporter |
| `minecraft_handshakes` | Count of handshake requests | `enable-handshakes` | FabricExporter |
| `jvm_*` | JVM metrics collected by [Prometheus client](https://github.com/prometheus/client_java) | `export-jvm-metrics` | Prometheus client |## Getting started
To use this mod you should have at least Fabric server and Prometheus installed.
### Installing mod
1. Download the mod from [Releases](https://github.com/ruscalworld/fabric-exporter/releases) page.
2. Drop downloaded mod jar to the `mods` folder.
3. Start your server to generate config file.
4. Open `config/exporter.properties`, ensure that `server-port` value is an open port that can be accessed by your Prometheus and change it if required.
5. Restart the server if you made changes in config.### Configuring Prometheus
1. Open your Prometheus config file (it located at `/etc/prometheus/prometheus.yml` by default).
```bash
sudo nano /etc/prometheus/prometheus.yml
```
2. Add FabricExporter endpoint to the `scrape_configs` section.
Don't forget to replace `127.0.0.1` with address of your server and `25585` with port specified in `server-port` property in `exporter.properties` file.
```YAML
- job_name: 'fabric'
static_configs:
- targets: ['127.0.0.1:25585']
```
3. Restart Prometheus service.
```bash
sudo service prometheus restart
```### Importing Grafana dashboard
If you want to use Grafana, you can use my dashboard as template.
I assume that you have already [created a Prometheus data source](https://prometheus.io/docs/visualization/grafana/) in Grafana.
So, let's import [dashboard for FabricExporter](https://grafana.com/grafana/dashboards/14492).1. Log in to your Grafana and go to `Create -> Import` tab.
2. Type `14492` in "Import via grafana.com" field and click "Load".
3. On the next page change settings as you wish and click "Import".## Configuring
After your server starts, FabricExporter will create `exporter.properties` file in the `config` folder.
You should use this file to configure the mod.
In this file you can see some general settings and metrics settings.### General settings
| Property | Description | Default value |
|-------------------|------------------------------------------------------------------|---------------|
| `server-port` | Port on what the web server will listen for requests | `25585` |
| `update-interval` | Interval between gauge metrics updates in milliseconds | `1000` |
| `use-spark` | If set to `false`, FabricExporter will be independent from Spark | `true` |### Metrics settings
You can disable any metric that registered via MetricRegistry (all metrics by default) using `exporter.properties` file.
Names of properties consist of `enable` and metric name without prefix and `_` replaced with `-`.
For example, if you want to disable `minecraft_players_online`, you should set `enable-players-online` to `false`.
You can also see list of available properties in "Exposed metrics" section.
If you can't find property for some metrics, you can manually add it.
All metrics are enabled by default.## License
MIT license. Read more in [LICENSE](LICENSE)