/** * {@link Endpoint @Endpoint} that outputs metrics in a format that can be scraped by the * Prometheus server. * * @author Jon Schneider * @author Johnny Lim * @since 2.0.0 */ @WebEndpoint(id = "prometheus") publicclassPrometheusScrapeEndpoint {
Affect(class count: 3 , method count: 1) cost in 1768 ms, listenerId: 8 ts=2024-07-18 14:33:26;thread_name=http-nio-80-exec-151;id=90cf;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@2a6dbb7c @org.apache.tomcat.util.net.AbstractEndpoint.getCurrentThreadsBusy() at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.util.modeler.BaseModelMBean.getAttribute(BaseModelMBean.java:165) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:647) at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678) at io.micrometer.core.instrument.binder.tomcat.TomcatMetrics.lambda$registerThreadPoolMetrics$2(TomcatMetrics.java:158) at io.micrometer.core.instrument.binder.tomcat.TomcatMetrics.safeDouble(TomcatMetrics.java:370) at io.micrometer.core.instrument.binder.tomcat.TomcatMetrics.lambda$registerThreadPoolMetrics$3(TomcatMetrics.java:158) at io.micrometer.core.instrument.internal.DefaultGauge.value(DefaultGauge.java:53) at io.micrometer.prometheus.PrometheusMeterRegistry.lambda$newGauge$5(PrometheusMeterRegistry.java:335) at io.micrometer.prometheus.MicrometerCollector.collect(MicrometerCollector.java:75) at io.prometheus.client.Collector.collect(Collector.java:46) at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.findNextElement(CollectorRegistry.java:197) at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.nextElement(CollectorRegistry.java:212) at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.nextElement(CollectorRegistry.java:152) at io.prometheus.client.exporter.common.TextFormat.write004(TextFormat.java:71) at org.springframework.boot.actuate.metrics.export.prometheus.TextOutputFormat$1.write(TextOutputFormat.java:45) at org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint.scrape(PrometheusScrapeEndpoint.java:62) at sun.reflect.GeneratedMethodAccessor5358.invoke(null:-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) ......
又一个DefaultGauge方法,trace下看看
trace io.micrometer.core.instrument.internal.DefaultGauge value -n 5 --skipJDKMethod false '#cost>7000'
Command execution times exceed limit: 5, so command will exit. You can set it with -n option. `---ts=2024-07-18 14:54:08;thread_name=http-nio-80-exec-10;id=117;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@56f72909 `---[3507.01059ms] io.micrometer.core.instrument.internal.DefaultGauge:value() +---[0.00% 0.005822ms ] java.lang.ref.WeakReference:get() #50 `---[100.00% 3506.975301ms ] java.util.function.ToDoubleFunction:applyAsDouble() #53 [arthas@36]$