prometheus / client_java

Prometheus instrumentation library for JVM applications
http://prometheus.github.io/client_java/
Apache License 2.0
2.17k stars 791 forks source link

Kafka Metrics not working with v0.10.0 and micrometer 1.6.3 #623

Open josetesan opened 3 years ago

josetesan commented 3 years ago

Hi, After upgrading to v0.10.0, i can't make kafka metrics work anymore.

See the stacktrace Caused by: java.lang.NoSuchFieldError: UNTYPED at io.micrometer.prometheus.PrometheusMeterRegistry.newMeter(PrometheusMeterRegistry.java:251) at io.micrometer.core.instrument.MeterRegistry.lambda$register$4(MeterRegistry.java:335) at io.micrometer.core.instrument.MeterRegistry.lambda$registerMeterIfNecessary$5(MeterRegistry.java:561) at io.micrometer.core.instrument.MeterRegistry.getOrCreateMeter(MeterRegistry.java:614) at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:568) at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:561) at io.micrometer.core.instrument.MeterRegistry.register(MeterRegistry.java:335) at io.micrometer.core.instrument.Meter$Builder.register(Meter.java:468) at io.micrometer.core.instrument.composite.CompositeCustomMeter.add(CompositeCustomMeter.java:34) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at java.base/java.util.Collections$SetFromMap.forEach(Collections.java:5581) at io.micrometer.core.instrument.composite.CompositeMeterRegistry.lambda$new$0(CompositeMeterRegistry.java:65) at io.micrometer.core.instrument.composite.CompositeMeterRegistry.lock(CompositeMeterRegistry.java:184) at io.micrometer.core.instrument.composite.CompositeMeterRegistry.lambda$new$1(CompositeMeterRegistry.java:65) at io.micrometer.core.instrument.MeterRegistry.getOrCreateMeter(MeterRegistry.java:624) at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:568) at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:561) at io.micrometer.core.instrument.MeterRegistry.register(MeterRegistry.java:335) at io.micrometer.core.instrument.Meter$Builder.register(Meter.java:468) at io.micrometer.core.instrument.binder.kafka.KafkaMetrics.getCommonTags(KafkaMetrics.java:109) at io.micrometer.core.instrument.binder.kafka.KafkaMetrics.bindTo(KafkaMetrics.java:101) at io.micrometer.core.instrument.binder.kafka.KafkaClientMetrics.bindTo(KafkaClientMetrics.java:39)

I'm using micrometer 1.6.3 and java11.0.10.

Back to v0.9.0 and it does work fine.

Can this be related to https://github.com/micrometer-metrics/micrometer/issues/2419 ?

fstab commented 3 years ago

Yes, I think you found the root cause.

Just curious: How are you running Micrometer with the Prometheus client_java 0.10.0? The latest Micrometer version 1.6.4 is bundled with the Prometheus client_java 0.9.0.

josetesan commented 3 years ago

Actually , had to revert back to 0.9.0

shakuzen commented 3 years ago

Micrometer adapted to the breaking change in the prometheus java client 0.10.0 with micrometer-metrics/micrometer#2418, which will be included in our upcoming 1.7.0 release. Consequently, Micrometer 1.7.0 will only work with the prometheus java client 0.10.0 or later, and Micrometer versions before that will only work with 0.9.x or less.

rever67697 commented 1 year ago

I have got into similar issue

41050 2023-09-07 09:34:09.790 uat [ems-integrated-management,TID: N/A] [XNIO-1 task-1] ERROR c.s.e.c.e.GlobalExceptionHandler.exception 34 -全局异常信息 ex=Handler dispatch failed; nested exception is java.lang.N       oSuchFieldError: UNKNOWN
 41051 org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchFieldError: UNKNOWN
 41052         at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1058)
 41053         at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
 41054         at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
 41055         at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
 41056         at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
 41057         at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
 41058         at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
 41059         at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
 41060         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
 41061         at brave.servlet.TracingFilter.doFilter(TracingFilter.java:68)
 41062         at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
 41063         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
 41064         at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
 41065         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 41066         at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
 41067         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
 41068         at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
 41069         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 41070         at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
 41071         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
 41072         at brave.servlet.TracingFilter.doFilter(TracingFilter.java:87)
 41073         at org.springframework.cloud.sleuth.instrument.web.LazyTracingFilter.doFilter(TraceWebServletAutoConfiguration.java:141)
 41074         at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
 41075         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
 41076         at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:97)
 41077         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 41078         at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
 41079         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
 41080         at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
 41081         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 41082         at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
 41083         at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
 41084         at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
 41085         at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
 41086         at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
 41087         at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
 41088         at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
 41089         at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:111)
 41090         at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
 41091         at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
 41092         at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
 41093         at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
 41094         at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
 41095         at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
 41096         at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
 41097         at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
 41098         at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
 41099         at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
 41100         at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
 41101         at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
 41102         at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
41103         at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
 41104         at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
 41105         at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
 41106         at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
 41107         at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
 41108         at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
 41109         at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
 41110         at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
 41111         at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
 41112         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
 41113         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
 41114         at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
 41115         at java.lang.Thread.run(Thread.java:750)
 41116 Caused by: java.lang.NoSuchFieldError: UNKNOWN
 41117         at io.micrometer.prometheus.PrometheusMeterRegistry.newMeter(PrometheusMeterRegistry.java:320)
 41118         at io.micrometer.core.instrument.MeterRegistry.lambda$register$4(MeterRegistry.java:333)
 41119         at io.micrometer.core.instrument.MeterRegistry.lambda$registerMeterIfNecessary$5(MeterRegistry.java:559)
 41120         at io.micrometer.core.instrument.MeterRegistry.getOrCreateMeter(MeterRegistry.java:612)
 41121         at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:566)
 41122         at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:559)
 41123         at io.micrometer.core.instrument.MeterRegistry.register(MeterRegistry.java:333)
 41124         at io.micrometer.core.instrument.Meter$Builder.register(Meter.java:468)
 41125         at io.micrometer.core.instrument.binder.kafka.KafkaMetrics.getCommonTags(KafkaMetrics.java:105)
 41126         at io.micrometer.core.instrument.binder.kafka.KafkaMetrics.bindTo(KafkaMetrics.java:97)
 41127         at io.micrometer.core.instrument.binder.kafka.KafkaClientMetrics.bindTo(KafkaClientMetrics.java:39)
 41128         at org.springframework.kafka.core.MicrometerProducerListener.producerAdded(MicrometerProducerListener.java:75)
 41129         at org.springframework.kafka.core.DefaultKafkaProducerFactory.lambda$doCreateProducer$14(DefaultKafkaProducerFactory.java:545)
 41130         at java.util.ArrayList.forEach(ArrayList.java:1259)
 41131         at org.springframework.kafka.core.DefaultKafkaProducerFactory.doCreateProducer(DefaultKafkaProducerFactory.java:545)
 41132         at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:518)
 41133         at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:512)
 41134         at org.springframework.kafka.core.DefaultKafkaProducerFactory$$FastClassBySpringCGLIB$$6502e513.invoke(<generated>)
 41135         at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
 41136         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
 41137         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 41138         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
 41139         at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
 41140         at org.springframework.cloud.sleuth.instrument.messaging.SleuthKafkaAspect.wrapProducerFactory(TraceMessagingAutoConfiguration.java:311)
 41141         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 41142         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 41143         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 41144         at java.lang.reflect.Method.invoke(Method.java:498)
 41145         at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
 41146         at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
 41147         at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
 41148         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 41149         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
 41150         at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
 41151         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 41152         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
 41153         at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
 41154         at org.springframework.kafka.core.DefaultKafkaProducerFactory$$EnhancerBySpringCGLIB$$769f329f.createProducer(<generated>)
 41155         at org.springframework.kafka.core.KafkaTemplate.getTheProducer(KafkaTemplate.java:665)
 41156         at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:551)
41157         at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:369)
 41158         at com.example.ems.log.service.impl.LogServiceImpl.of(LogServiceImpl.java:73)
 41159         at com.example.ems.integrated.service.impl.IntegratedNoticeServiceImpl.updateIntegratedNotice(IntegratedNoticeServiceImpl.java:164)
 41160         at com.example.ems.integrated.service.impl.IntegratedNoticeServiceImpl$$FastClassBySpringCGLIB$$a2c35b7e.invoke(<generated>)
 41161         at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
 41162         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
 41163         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 41164         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
 41165         at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367)
 41166         at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
 41167         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 41168         at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
 41169         at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
 41170         at com.example.ems.integrated.service.impl.IntegratedNoticeServiceImpl$$EnhancerBySpringCGLIB$$7bf115db.updateIntegratedNotice(<generated>)
 41171         at com.example.ems.integrated.controller.IntegratedNoticeController.updateIntegratedNotice(IntegratedNoticeController.java:92)
 41172         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 41173         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 41174         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 41175         at java.lang.reflect.Method.invoke(Method.java:498)
 41176         at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
 41177         at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
 41178         at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
 41179         at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
 41180         at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
 41181         at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
 41182         at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043)
 41183         ... 63 common frames omitted
shakuzen commented 1 year ago

@rever67697 did you see my previous comment? I am guessing you are using incompatible versions of the Prometheus Java client and Micrometer's Prometheus registry.