feat: implemented PrometheusMetricsModule
This commit is contained in:
parent
285e050168
commit
c4c6210929
@ -15,4 +15,8 @@ dependencies {
|
|||||||
api 'org.sql2o:sql2o:1.8.0'
|
api 'org.sql2o:sql2o:1.8.0'
|
||||||
api 'com.clickhouse:clickhouse-jdbc:0.7.1'
|
api 'com.clickhouse:clickhouse-jdbc:0.7.1'
|
||||||
api 'org.lz4:lz4-java:1.8.0'
|
api 'org.lz4:lz4-java:1.8.0'
|
||||||
|
|
||||||
|
api 'io.prometheus:prometheus-metrics-core:1.3.1'
|
||||||
|
api 'io.prometheus:prometheus-metrics-instrumentation-jvm:1.3.1'
|
||||||
|
api 'io.prometheus:prometheus-metrics-exporter-httpserver:1.3.1'
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,43 @@
|
|||||||
|
package ru.dragonestia.msb3.api.module;
|
||||||
|
|
||||||
|
import io.prometheus.metrics.exporter.httpserver.HTTPServer;
|
||||||
|
import io.prometheus.metrics.instrumentation.jvm.JvmMetrics;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
|
@Log4j2
|
||||||
|
public class PrometheusMetricsModule {
|
||||||
|
|
||||||
|
private static boolean used = false;
|
||||||
|
|
||||||
|
@Getter private static HTTPServer server;
|
||||||
|
|
||||||
|
public static synchronized void init(InetSocketAddress bindingAddress) {
|
||||||
|
if (used) return;
|
||||||
|
used = true;
|
||||||
|
|
||||||
|
try {
|
||||||
|
run(bindingAddress);
|
||||||
|
log.info("Listening web-server on http://{}:{}/metrics for Prometheus metrics", bindingAddress.getHostName(), bindingAddress.getPort());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.error(ex, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void run(InetSocketAddress address) throws Exception {
|
||||||
|
JvmMetrics.builder().register();
|
||||||
|
|
||||||
|
server = HTTPServer.builder()
|
||||||
|
.inetAddress(address.getAddress())
|
||||||
|
.port(address.getPort())
|
||||||
|
.buildAndStart();
|
||||||
|
|
||||||
|
registerDefaultMetrics();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerDefaultMetrics() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
18
prometheus/docker-compose.yml
Normal file
18
prometheus/docker-compose.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus
|
||||||
|
ports:
|
||||||
|
- '9090:9090'
|
||||||
|
volumes:
|
||||||
|
- './prometheus.yml:/etc/prometheus/prometheus.yml'
|
||||||
|
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana
|
||||||
|
ports:
|
||||||
|
- '9091:80'
|
||||||
|
- '9092:3000'
|
||||||
|
environment:
|
||||||
|
GF_SECURITY_ADMIN_USER: admin
|
||||||
|
GF_SECURITY_ADMIN_PASSWORD: admin
|
||||||
11
prometheus/prometheus.yml
Normal file
11
prometheus/prometheus.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
global:
|
||||||
|
scrape_interval: 5s
|
||||||
|
external_labels:
|
||||||
|
monitor: 'codelab-monitor'
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: 'msb3'
|
||||||
|
scrape_interval: 5s
|
||||||
|
metrics_path: '/metrics'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ 'host.docker.internal:7500' ]
|
||||||
Loading…
x
Reference in New Issue
Block a user