Spring-Boot执行器在/metrics
中公开了许多有用的指标,例如正常运行时间、内存使用情况、GC计数。
在使用Dropwizard Metrics集成时,只有其中的一部分被发送到Graphite。具体来说,只有计数器和仪表
有什么方法可以将这些其他指标发布到石墨上吗?
文件表明,应该可以:
Dropwizard“Metrics”库的用户会发现Spring Boot指标会自动发布到com。科达哈尔。韵律学。计量注册学
这里有一个解决方案,可以根据Spring指标的变化更新DropWizard指标。它还可以在不打开EnableScheduling的情况下执行此操作:
@EnableMetrics
@Configuration
public class ConsoleMetricsConfig extends MetricsConfigurerAdapter {
@Autowired
private SystemPublicMetrics systemPublicMetrics;
@Override
public void configureReporters(MetricRegistry metricRegistry) {
metricRegistry.register("jvm.memory", new MemoryUsageGaugeSet());
metricRegistry.register("jvm.thread-states", new ThreadStatesGaugeSet());
metricRegistry.register("jvm.garbage-collector", new GarbageCollectorMetricSet());
metricRegistry.register("spring.boot", (MetricSet) () -> {
final Map<String, Metric> gauges = new HashMap<String, Metric>();
for (final org.springframework.boot.actuate.metrics.Metric<?> springMetric :
systemPublicMetrics.metrics()) {
gauges.put(springMetric.getName(), (Gauge<Object>) () -> {
return systemPublicMetrics.metrics().stream()
.filter(m -> StringUtils.equals(m.getName(), springMetric.getName()))
.map(m -> m.getValue())
.findFirst()
.orElse(null);
});
}
return Collections.unmodifiableMap(gauges);
});
registerReporter(ConsoleReporter
.forRegistry(metricRegistry)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build())
.start(intervalSecs, TimeUnit.SECONDS);
}
}
它使用com。雷安特尼。用于启用其他Spring注释支持和DropWizard报告器的度量标准库:
<dependency>
<groupId>com.ryantenney.metrics</groupId>
<artifactId>metrics-spring</artifactId>
<version>3.1.3</version>
</dependency>
但在这种特殊情况下,这实际上是没有必要的。
Spring boot创建的系统指标不会自动报告,因为MetricsRegistry对这些指标一无所知。
您应该在应用程序启动时手动注册这些指标。
@Autowired
private SystemPublicMetrics systemPublicMetrics;
private void registerSystemMetrics(MetricRegistry metricRegistry) {
systemPublicMetrics.metrics().forEach(m -> {
Gauge<Long> metricGauge = () -> m.getValue().longValue();
metricRegistry.register(m.getName(), metricGauge);
});
}
我定义了Gauge
,并非所有系统指标都应添加为量规。例如,计数器应用于捕获计数值。
如果您不想使用Spring boot。使用可以开箱即用地包含metrics-jvm
来捕获JVM级别的指标。
只是想澄清一下制度之间的关系。cpu。计数度量和系统。cpu。SpringBoot 2.3.1致动器指标endpoint的使用指标。 例如,在我的案例中: /actuator/metrics/system.cpu.count的值为:2 /执行器/指标/系统的价值。cpu。用法为:0.024765603908878 这是否意味着我的cpu利用率百分比为:0.024765603908878/2*100
从现有检测的Spring Boot应用程序向honeycomb-opentracing-proxy发送跟踪失败,代理控制台中出现以下错误: Spring Boot版本:2.1.3.发布Spring Cloud Sleuth版本:2.1.1.发布 应用程序.属性 如有任何帮助,我将不胜感激
问题内容: 我对JVM内存管理(至少对于SUN的内存管理)有疑问。 我想知道如何控制JVM将未使用的内存发送回OS(以我的情况为Windows)的事实。 我编写了一个简单的Java程序来说明我的期望。使用- Dcom.sun.management.jmxremote选项运行它,以便例如也可以使用jconsole监视堆。 使用以下程序: 一旦第一个GC完成(预期),内部堆就释放了,但是内存仅从第三个
我正在使用docker运行datadog代理 我想使用dogstatsd发送自定义指标。当我运行 我可以在wireshark中看到,udp数据包成功地从源到目标,但这个指标没有提交给datadog。我缺少一些配置吗?
问题内容: 我想以json格式向php发送一些数据,并在php中进行一些操作。我的问题是我无法通过Ajax将json数据发送到我的php文件。请帮助我该怎么做。我已经尝试过这种方式.. 在PHP中,我使用: 在php文件中添加print_r($ _ POST)时,它在firebug中显示array(0){}。 问题答案: 输了。您没有将JSON发送到服务器,而是发送了普通的POST查询(恰好包含J
Request size limit etcd is designed to handle small key value pairs typical for metadata. Larger requests will work, but may increase the latency of other requests. For the time being, etcd guarantees