Я пытаюсь выставить метрики, используя http-сервер prometheus (io.prometheus.client.exporter.HTTPServer), для которого я использую приведенную ниже зависимость.
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_httpserver</artifactId>
<version>0.2.0</version>
</dependency>
По умолчанию httpserver Prometheus выставляет все метрики вКонечная точка "/ metrics", и я хочу переопределить ее и ограничить, чтобы выставить метрики только для любой конкретной конечной точки (например, "/ prometheusMetrics").Используя приведенный ниже код, я запускаю http-сервер Prometheus и выставляю метрики.
@ServiceBean(singleton = true)
public class PrometheusCustomHTTPServer {
private static Logger s_logger = LoggerFactory.getLogger(PrometheusCustomHTTPServer.class);
private HTTPServer httpServer;
private static CollectorRegistry registry = CollectorRegistry.defaultRegistry;
private static boolean initailized = false;
@PostConstruct
public void start() {
if(httpServer == null) {
String hostAddress;
try {
int port = 9090;
httpServer = new HTTPServer(port,true);
s_logger.error("started prometheus at http://"+port);
} catch (IOException e) {
System.out.println("Exception occured while starting of prometheus server" + e);
}
initialize(registry);
}
}
private static synchronized void initialize(CollectorRegistry registryToUse) {
if(!initailized) {
new StandardExports().register(registry);
new MemoryPoolsExports().register(registry);
new GarbageCollectorExports().register(registry);
new ThreadExports().register(registry);
new ClassLoadingExports().register(registry);
System.out.println("StandardExports initialized");
initailized = true;
}
}
}