1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-25 05:35:25 +02:00

Improve usability of Prometheus metrics backend (#16060)

This commit is contained in:
sfan5
2025-04-23 09:30:04 +02:00
committed by GitHub
parent 00addc3e5d
commit 7c619bdc9a
3 changed files with 20 additions and 9 deletions

View File

@@ -284,12 +284,12 @@ Server::Server(
throw ServerError("Supplied invalid gamespec");
#if USE_PROMETHEUS
if (!simple_singleplayer_mode)
m_metrics_backend = std::unique_ptr<MetricsBackend>(createPrometheusMetricsBackend());
else
#else
if (true)
if (!simple_singleplayer_mode) {
// Note: may return null
m_metrics_backend.reset(createPrometheusMetricsBackend());
}
#endif
if (!m_metrics_backend)
m_metrics_backend = std::make_unique<MetricsBackend>();
m_uptime_counter = m_metrics_backend->addCounter("minetest_core_server_uptime", "Server uptime (in seconds)");

View File

@@ -11,6 +11,7 @@
#include <prometheus/gauge.h>
#include "log.h"
#include "settings.h"
#include "exceptions.h"
#endif
/* Plain implementation */
@@ -183,7 +184,16 @@ MetricsBackend *createPrometheusMetricsBackend()
{
std::string addr;
g_settings->getNoEx("prometheus_listener_address", addr);
return new PrometheusMetricsBackend(addr);
if (addr.empty())
return nullptr;
infostream << "Starting Prometheus metrics on " << addr << std::endl;
try {
return new PrometheusMetricsBackend(addr);
} catch (std::exception &e) {
errorstream << "Error while starting Prometheus metrics on " << addr
<< ":\n" << e.what() << std::endl;
throw e;
}
}
#endif