Spring boot 在SpringBoot中使用prometheus自定义指标
我不确定这是否是一个bug,但我在过去的一天中尝试实现这个库,但没有任何结果。我想这可能与依赖项版本有冲突,但我尝试了所有方法 因此,我有一个非常简单的spring引导项目,它服务于Spring boot 在SpringBoot中使用prometheus自定义指标,spring-boot,prometheus,spring-boot-actuator,prometheus-java,Spring Boot,Prometheus,Spring Boot Actuator,Prometheus Java,我不确定这是否是一个bug,但我在过去的一天中尝试实现这个库,但没有任何结果。我想这可能与依赖项版本有冲突,但我尝试了所有方法 因此,我有一个非常简单的spring引导项目,它服务于/test端点,并且我配置了 柜台 直方图 现在我在/exactor/prometheus下有了普罗米修斯的度量标准 预期结果是,这些指标将包含以下附加指标: requests\u test\u total 请求\u延迟\u秒 我正在触发/test端点,但普罗米修斯指标中没有显示这些指标 我错过什么了吗 这些是我的依
/test
端点,并且我配置了
/exactor/prometheus
下有了普罗米修斯的度量标准
预期结果是,这些指标将包含以下附加指标:
requests\u test\u total
请求\u延迟\u秒
/test
端点,但普罗米修斯指标中没有显示这些指标
我错过什么了吗
这些是我的依赖项:
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('io.micrometer:micrometer-registry-prometheus')
compile "io.prometheus:simpleclient:0.8.1"
compile "io.prometheus:simpleclient_hotspot:0.8.1"
compile "io.prometheus:simpleclient_httpserver:0.8.1"
compile "io.prometheus:simpleclient_pushgateway:0.8.1"
compile group: 'io.prometheus', name: 'simpleclient_spring_boot', version: '0.8.1'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
compile group: 'ch.qos.logback.contrib', name: 'logback-json-classic', version: '0.1.5'
compile group: 'ch.qos.logback.contrib', name: 'logback-jackson', version: '0.1.5'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.3'
compile group: 'net.logstash.logback', name: 'logstash-logback-encoder', version: '6.3'
}
这是端点类实现:
package prometheus.prometheusclientexample;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.prometheus.client.Counter;
import io.prometheus.client.Histogram;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SimpleEndpoint {
private static final Logger logger = LoggerFactory.getLogger("MainLogger");
static final Counter test_requests = Counter.build().name("requests_test_total").help("Total /test requests.").register();
static final Histogram requestLatency = Histogram.build()
.name("requests_latency_seconds").help("Request latency in seconds.").register();
@RequestMapping("/test")
public String test2() throws InterruptedException {
Histogram.Timer requestTimer = requestLatency.startTimer();
try {
logger.info("Before");
test_requests.inc();
logger.info("This is a simple endpint");
}
finally {
requestTimer.observeDuration();
}
return "OK NEW";
}
}
/致动器/普罗米修斯
响应:
#帮助jvm_gc_memory_allocated_bytes_total在一次gc之后到下一次gc之前增加年轻一代内存池的大小
#键入jvm\u gc\u内存\u分配的字节\u总计数器
jvm\u gc\u内存\u分配的字节\u总计0.0
#帮助jvm\u gc\u max\u数据\u大小\u字节旧一代内存池的最大大小
#键入jvm\u gc\u max\u data\u size\u bytes gauge
jvm_gc_max_data_size_字节4.294967296E9
#HELP logback_events_进入日志的错误级别事件总数
#输入logback\u事件\u总数计数器
logback\u事件\u总数{level=“warn”,}0.0
logback_events_total{level=“debug”}368.0
logback\u事件\u总数{level=“error”}0.0
logback\u事件\u总数{level=“trace”}0.0
logback\u事件\u总数{level=“info”}12.0
#HELP jvm_memory_max_bytes可用于内存管理的最大内存量(以字节为单位)
#键入jvm\u memory\u max\u bytes gauge
jvm_memory_max_bytes{area=“heap”,id=“G1幸存者空间”}-1.0
jvm_memory_max_bytes{area=“heap”,id=“G1 Old Gen”,}4.294967296E9
jvm_memory_max_bytes{area=“nonheap”,id=“Metaspace”,}-1.0
jvm_memory_max_bytes{area=“nonheap”,id=“CodeHeap”non-nmethods',}6975488.0
jvm_memory_max_bytes{area=“heap”,id=“G1 Eden Space”}-1.0
jvm_memory_max_bytes{area=“nonheap”,id=“Compressed Class Space”,}1.073741824E9
jvm_memory_max_bytes{area=“nonheap”,id=“CodeHeap”non-profiled nmethods',}2.44682752E8
#帮助tomcat\u会话\u活动\u最长\u秒
#输入tomcat\u会话\u活动\u最大\u秒量表
tomcat_会话_活动_最大_秒0.0
#帮助jvm\u gc\u live\u数据\u大小\u字节完整gc后旧代内存池的大小
#键入jvm\u gc\u live\u data\u size\u bytes gauge
jvm\ gc\实时\数据\大小\字节0.0
#帮助进程\u开始\u时间\u秒自unix时代以来进程的开始时间。
#类型进程\启动\时间\秒量表
进程启动时间秒1.588860975956E9
#帮助tomcat\u会话\u活动\u最大会话
#输入tomcat\u sessions\u active\u max\u sessions量表
tomcat_会话_活动_最大会话0.0
#帮助tomcat\u会话\u已创建\u会话\u总计
#键入tomcat\u sessions\u created\u sessions\u total counter
tomcat_sessions_创建的_sessions_总计0.0
#HELP jvm_classes_unload_classes_total自Java虚拟机开始执行以来已卸载的类总数
#键入jvm\u classes\u unload\u classes\u total counter
jvm\u类\u已卸载\u类\u总计0.0
#帮助jvm_线程\u活动线程了解当前活动线程的数量,包括守护进程线程和非守护进程线程
#键入jvm\u threads\u live\u threads gauge
jvm\u线程\u实时线程24.0
#帮助处理\u文件\u最大\u文件最大文件描述符计数
#键入进程\u文件\u最大\u文件量表
处理\u文件\u最大\u文件10240.0
#帮助http\u服务器请求\u秒
#键入http\u服务器\u请求\u秒摘要
http_服务器_请求_秒数_计数{exception=“None”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/actuator/prometheus”,}1.0
http_server_requests_seconds_sum{exception=“None”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/exactor/prometheus”,}0.144024648
http_服务器_请求_秒数_计数{exception=“None”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/test”,}2.0
http_server_requests_seconds_sum{exception=“None”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/test”,}0.029707973
#帮助http\u服务器\u请求\u秒\u最大值
#键入http\u server\u requests\u seconds\u max gauge
http_server_requests_seconds_max{exception=“None”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/exactor/prometheus”,}0.144024648
http_server_requests_seconds_max{exception=“None”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/test”,}0.022717086
#帮助jvm_memory_used_bytes使用的内存量
#类型jvm\u内存\u已用字节数
jvm_memory_used_bytes{area=“heap”,id=“G1幸存者空间”}7340032.0
jvm_memory_used_bytes{area=“heap”,id=“G1 Old Gen”}4369520.0
jvm_memory_used_bytes{area=“nonheap”,id=“Metaspace”,}4.1996312E7
jvm_memory_used_bytes{area=“nonheap”,id=“CodeHeap”non-nmethods',}1204864.0
jvm_memory_used_bytes{area=“heap”,id=“G1 Eden Space”}7.9691776E7
jvm_memory_used_bytes{area=“nonheap”,id=“Compressed Class Space”,}5303144.0
jvm_memory_used_bytes{area=“nonheap”,id=“CodeHeap”non-profiled nmethods',}6563328.0
#帮助处理Java虚拟机的正常运行时间
#类型进程正常运行时间秒量表
进程正常运行时间15.703秒
#帮助jvm_threads_peak_threads自Java虚拟机启动或重置峰值后的峰值实时线程计数
#类型jvm\u threads\u peak\u threads gauge
jvm\u线程\u峰值\u线程24.0
#帮助处理\u文件\u打开\u文件打开文件描述符计数
#键入进程文件打开文件量表
处理\u文件\u打开\u文件83.0
#帮助tomcat\u会话\u过期\u会话\u总数
#键入tomcat_sessions_expired_sessions_total counter
tomcat_会话_已过期_会话_总计0.0
#帮助处理\u cpu\u使用率Java虚拟机进程的“最近cpu使用率”
#类型进程\u cpu\u使用量表
进程\u cpu \u使用率0.002284847603487466
#HELP system_load_average_1m排队到可用处理器的可运行实体数与在可用pro上运行的可运行实体数之和
@Autowired
private MeterRegistry meterRegistry;
@GetMapping(value = "/main/test", produces = "text/plain")
public String test() {
meterRegistry.counter("requests_test_total").increment();
return "ok";
}
management.endpoints.web.exposure.include=health,info,loggers,prometheus
@Bean
public CollectorRegistry collectorRegistry() {
return CollectorRegistry.defaultRegistry;
}
Histogram().bulid().name(someName).register(collectorRegistry);