前言
之前介绍过使用springboot整合Prometheus采集应用自定义指标的方法,但这种方式需要引入actuator。如果有些项目没有引入actuator模块,那应该如何做呢?下面就来介绍一下。
1.引入Prometheus 客户端依赖
compile "io.prometheus:simpleclient_hotspot:0.0.24"
compile "io.micrometer:micrometer-registry-prometheus:1.2.1"
compile "io.micrometer:micrometer-core:1.2.1"
2.创建Prometheus 指标管理类PrometheusMeterRegistry
//prometheus 指标管理类
PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
meterRegistry.config()//应用名
.commonTags("application", "k8s-demo");
3.定义日志文件指标,添加文件指标,并将日志文件指标注册到管理类上
Gauge logFileSizeGauge = Gauge.build()
.name("file_log_size")
.labelNames("fileName","path","date")
.help("Log File Name And Size info").register();
logFileSizeGauge.labels(".m2","C:\Users\.m2","2021-12-13").set(256);
logFileSizeGauge.labels("jdks","C:\Users\.m2\jdks","2021-12-13").set(1024);
meterRegistry.getPrometheusRegistry().register(logFileSizeGauge);
- 创建http服务,暴露8081端口,这样的话Prometheus可通过该端口采集应用指标
HttpServer httpServer = HttpServer.create(new InetSocketAddress(8081), 0);
httpServer.createContext("/metrics", httpExchange -> {
String response = meterRegistry.scrape();
httpExchange.sendResponseHeaders(200, response.getBytes().length);
try (OutputStream os = httpExchange.getResponseBody()) {
os.write(response.getBytes());
}
});
new Thread(httpServer::start).start();
- 可以将上面类写到程勋main 方法里,然后运行main方法,访问http://localhost:8081/metrics可查看自定义的指标
6.Prometheus.yml 增加配置,启动Prometheus .\prometheus.exe --config.file=prometheus.yml
- job_name: 'log_file_size'
metrics_path: 'metrics'
static_configs:
- targets: ['localhost:8081']
7.访问Prometheus http://localhost:9090/,可查看已经采集到应用指标