mirror of
https://github.com/pocoproject/poco.git
synced 2025-01-07 09:48:04 +01:00
81 lines
2.3 KiB
C++
81 lines
2.3 KiB
C++
//
|
|
// MetricsServer.h
|
|
//
|
|
// Library: Prometheus
|
|
// Package: HTTP
|
|
// Module: MetricsServer
|
|
//
|
|
// Definition of the MetricsServer class.
|
|
//
|
|
// Copyright (c) 2022, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
//
|
|
|
|
|
|
#ifndef Prometheus_MetricsServer_INCLUDED
|
|
#define Prometheus_MetricsServer_INCLUDED
|
|
|
|
|
|
#include "Poco/Prometheus/Prometheus.h"
|
|
#include "Poco/Net/HTTPServer.h"
|
|
#include "Poco/Net/HTTPServerParams.h"
|
|
#include "Poco/Net/ServerSocket.h"
|
|
|
|
|
|
namespace Poco {
|
|
namespace Prometheus {
|
|
|
|
|
|
class Registry;
|
|
|
|
|
|
class Prometheus_API MetricsServer
|
|
/// A basic HTTP server for handling Prometheus metrics scraping
|
|
/// requests, based on Poco::Net::HTTPServer.
|
|
{
|
|
public:
|
|
static const Poco::UInt16 DEFAULT_PORT; /// 9100
|
|
static const std::string DEFAULT_PATH; /// "/metrics"
|
|
|
|
MetricsServer(Poco::UInt16 port = DEFAULT_PORT, const std::string& path = DEFAULT_PATH);
|
|
/// Creates a HTTPServer for serving metrics using the default Registry, listening
|
|
/// on the given port number and the given path.
|
|
|
|
MetricsServer(const Registry& registry, Poco::UInt16 port = DEFAULT_PORT, const std::string& path = DEFAULT_PATH);
|
|
/// Creates a HTTPServer for serving metrics using the given Registry, listening
|
|
/// on the given port number and the given path.
|
|
|
|
MetricsServer(const Registry& registry, Poco::Net::ServerSocket& socket, Poco::Net::HTTPServerParams::Ptr pServerParams = defaultParams(), const std::string& path = DEFAULT_PATH);
|
|
/// Creates a HTTPServer for serving metrics using the given Registry, listening
|
|
/// on the server socket (which can be a properly configured Poco::Net::SecureServerSocket
|
|
/// to enable HTTPS), and the given path.
|
|
|
|
~MetricsServer() = default;
|
|
/// Destroys the HTTPServer.
|
|
|
|
void start();
|
|
/// Starts the underlying Poco::Net::HTTPServer.
|
|
|
|
void stop();
|
|
/// Stops the underlying Poco::Net::HTTPServer.
|
|
|
|
protected:
|
|
static Poco::Net::HTTPServerParams::Ptr defaultParams();
|
|
|
|
private:
|
|
Poco::Net::HTTPServer _httpServer;
|
|
|
|
MetricsServer(const MetricsServer&) = delete;
|
|
MetricsServer(MetricsServer&&) = delete;
|
|
MetricsServer& operator = (const MetricsServer&) = delete;
|
|
MetricsServer& operator = (MetricsServer&&) = delete;
|
|
};
|
|
|
|
|
|
} } // namespace Poco::Prometheus
|
|
|
|
|
|
#endif // Prometheus_MetricsServer_INCLUDED
|