Difference between revisions of "Server Metrics using Prometheus"

From Minetest Wiki
Jump to navigation Jump to search
(rename Minetest to Luanti)
 
(4 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
Prometheus is an "open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach".
 
Prometheus is an "open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach".
  
Minetest has built-in support for prometheus, allowing you to see metrics about your server - such as player count and performance information.
+
Luanti has built-in support for prometheus, allowing you to see metrics about your server - such as player count and performance information.
  
== Using Prometheus in Minetest ==
+
Here are some examples of Grafana dashboards created using Prometheus:
 +
 
 +
- [https://monitor.rubenwardy.com/d/9TgIegyGk/ctf monitor.rubenwardy.com]
 +
- [https://monitoring.minetest.land/ monitoring.minetest.land] (note: this contains heavy mondifications)
 +
 
 +
== Using Prometheus in Luanti ==
  
 
=== Get or build the prometheus-cpp library ===
 
=== Get or build the prometheus-cpp library ===
  
 
You may be able to find prometheus-cpp in your distro's package manager.  
 
You may be able to find prometheus-cpp in your distro's package manager.  
Otherwise, you'll need to build it and make it available to Minetest.
+
Otherwise, you'll need to build it and make it available to Luanti.
  
 
Here's how you do that on Linux:
 
Here's how you do that on Linux:
Line 21: Line 26:
 
sudo make install</syntaxhighlight>
 
sudo make install</syntaxhighlight>
  
=== Build Minetest ===
+
=== Build Luanti ===
  
Now, you need build minetest with Prometheus enabled
+
Now, you need build Luanti with Prometheus enabled
  
<syntaxhighlight lang="bash">cmake . -DENABLE_PROMETHEUS
+
<syntaxhighlight lang="bash">cmake . -DENABLE_PROMETHEUS=1
 
make -j$(nproc)</syntaxhighlight>
 
make -j$(nproc)</syntaxhighlight>
  
 
=== Configure prometheus ===
 
=== Configure prometheus ===
  
Prometheus will make HTTP requests to Minetest's prometheus-cpp library to get the metrics.
+
Prometheus will make HTTP requests to Luanti's prometheus-cpp library to get the metrics.
  
You can set the prometheus listen address like so:
+
You can set the prometheus listen address by assigning an IP:PORT in the minetest.conf:
  
 
<code><pre>prometheus_listener_address = 127.0.0.1:30000</pre></code>
 
<code><pre>prometheus_listener_address = 127.0.0.1:30000</pre></code>

Latest revision as of 22:59, 22 October 2024

Prometheus is an "open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach".

Luanti has built-in support for prometheus, allowing you to see metrics about your server - such as player count and performance information.

Here are some examples of Grafana dashboards created using Prometheus:

- monitor.rubenwardy.com - monitoring.minetest.land (note: this contains heavy mondifications)

Using Prometheus in Luanti

Get or build the prometheus-cpp library

You may be able to find prometheus-cpp in your distro's package manager. Otherwise, you'll need to build it and make it available to Luanti.

Here's how you do that on Linux:

cd /tmp
git clone --recursive https://github.com/jupp0r/prometheus-cpp
mkdir prometheus-cpp/build
cd prometheus-cpp/build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=0
make -j$(nproc)
sudo make install

Build Luanti

Now, you need build Luanti with Prometheus enabled

cmake . -DENABLE_PROMETHEUS=1
make -j$(nproc)

Configure prometheus

Prometheus will make HTTP requests to Luanti's prometheus-cpp library to get the metrics.

You can set the prometheus listen address by assigning an IP:PORT in the minetest.conf:

prometheus_listener_address = 127.0.0.1:30000

Grafana

You can link up Prometheus to Grafana to make nice web graphs. For example: monitor.rubenwardy.com

To do: example layouts