Spring boot 在SpringBoot中使用prometheus自定义指标

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端点,但普罗米修斯指标中没有显示这些指标 我错过什么了吗 这些是我的依

我不确定这是否是一个bug,但我在过去的一天中尝试实现这个库,但没有任何结果。我想这可能与依赖项版本有冲突,但我尝试了所有方法

因此,我有一个非常简单的spring引导项目,它服务于
/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);