gpt4 book ai didi

spring-boot - 使用 Spring Boot 2.0 时将指标导出到文件

转载 作者:行者123 更新时间:2023-12-04 16:36:15 27 4
gpt4 key购买 nike

我正在寻找一种将 Spring Boot 指标导出到 Spring Boot 2 中的文件的方法。

在 Spring Boot 1.5.10 中,我们使用了自定义 MetricsExporter 实现 的类MetricWriter 并覆盖 set 和 increment 方法以使用记录器编写指标。我们使用日志文件是因为我们有不同的机制来稍后处理日志文件以进行指标分析。

我们还使用了 MetricsConfig 类,它使用了 bean MetricsEndpointMetricReader 从自定义配置类中的指标端点读取器读取指标。

但是,当我们升级到 Spring Boot 2.0.1 时,这些都不起作用,因为现有指标类发生了重大变化。

有人可以帮助我们在使用 Spring Boot 2.0 时如何导出指标并使用记录器编写它们吗?

@ExportMetricWriter
public class MetricsExporter implements MetricWriter {
private static Logger LOGGER = LoggerFactory.getLogger("metrics");
@Override
public void set(Metric<?> value) {
// Write the Gauge metrics to log file
LOGGER.info("timestamp={}, name={}, value={}", value.getTimestamp(), value.getName(),value.getValue());
}

@Override
public void increment(Delta<?> delta) {
//Write the Counter metrics to log file
LOGGER.info("timestamp={}, name={}, value={}", delta.getTimestamp(), delta.getName(),delta.getValue());
}

@Override
public void reset(String metricName) {

}

}

MetricsConfig 类如下,
@Configuration
public class MetricsConfig {
//Define the MetricsExporter bean to export metrics at regular interval to a log file
@Bean
public MetricsExporter metricsExporter() {
return new MetricsExporter();
}


//Define the MetricsEndpointMetricReader bean to export both push(counters and gauges) and pull(public) metrics
@Bean
public MetricsEndpointMetricReader metricsEndpointMetricReader(MetricsEndpoint metricsEndpoint) {
return new MetricsEndpointMetricReader(metricsEndpoint);
}
}

最佳答案

您可以实现自定义 MeterRegistry并将其连接为 @Bean . MeterRegistry角色之一实现是将展示格式定义为特定的监控系统(在您的情况下,是日志)。

这是一个开始:

public class LogMeterRegistry extends StepMeterRegistry {
private final Logger logger = LoggerFactory.getLogger(LogMeterRegistry.class);

/**
* @param step Governs on what frequency metrics are logged
*/
public LogMeterRegistry(Duration step) {
super(new StepRegistryConfig() {
@Override
public String prefix() {
return "log";
}

@Override
public String get(String key) {
return null;
}

@Override
public Duration step() {
return step;
}
}, Clock.SYSTEM);
}

@Override
protected void publish() {
for (Meter meter : getMeters()) {
logger.info(meter.getId().toString());
for (Measurement measurement : meter.measure()) {
logger.info(measurement.getStatistic().toString() + "=" + measurement.getValue());
}

}
}

@Override
protected TimeUnit getBaseTimeUnit() {
return TimeUnit.SECONDS;
}
}

issue为 Micrometer 1.1 开放以提供开箱即用的 LogMeterRegistry .

关于spring-boot - 使用 Spring Boot 2.0 时将指标导出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50193287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com