当前位置: 首页 > 知识库问答 >
问题:

使用Spring Boot 2.0时将度量导出到文件

夏侯智鑫
2023-03-14

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

在Spring Boot 1.5.10中,我们使用了一个自定义MetricsExporter类,该类实现MetricWriter并重写set和increment方法,以使用记录器写入度量。我们使用了一个日志文件,因为我们有一种不同的机制来稍后处理日志文件以进行度量分析。

我们还使用了MetricsConfig类,它使用bean MetricsEndpointMetricReader从定制配置类中的metricsendpoint读取器读取度量。

但是,当我们升级到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);
    }
}

共有2个答案

濮阳国兴
2023-03-14

如果您使用的是Spring Boot 2。x表示千分尺的版本

@Bean
LoggingMeterRegistry loggingMeterRegistry() {
    return new LoggingMeterRegistry();//by default, it will log metrics every 1m
}

您还可以配置不同的时段周期,如:

@Bean
LoggingMeterRegistry loggingMeterRegistry() {


    return new LoggingMeterRegistry(new LoggingRegistryConfig() {
        @Override
        public Duration step() {
            return Duration.ofSeconds(10); // log every 10 seconds
        }

        @Override
        public String get(String key) {
            return null;
        }
    }, Clock.SYSTEM);
}

如果您没有使用足够高的Spring Boot版本,请尝试声明1.1版本。在测微计的x中,取pom的芯。xml

    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-core</artifactId>
        <version>1.1.3</version>
    </dependency> 
董阳平
2023-03-14

您可以实现一个自定义的计量注册表,并将其连接为一个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;
    }
}

Microeter 1.1存在提供开箱即用的LogMeter注册表的问题。

 类似资料:
  • 我有php文件模板,我需要填充一些数据并导出为“rendered_view.php”。它需要每天自动完成。所以我正在尝试使用Laravel Scheduler。 所以我有: 查看“view_to_render.blade.php” 控制器"MiscController.php" 路线 控制台/内核。php 场景1:如果我导航到127.0.0.1:8000/testRenderView,它就可以工作

  • 问题内容: 我有SSIS包,可以将数据从表导出到Excel文件 这是我的步骤: 删除Excel表 创建具有我选择查询格式的Excel表格,该表格用于从数据库中检索数据 将数据从数据库插入Excel文件 我用过像查询 我从10000行中检索出3000行,并将这3000行放入我的Excel工作表中。 但是,当打开我的Excel工作表时,我看到滚动条一直延伸到第10000行并结束,因此我的Excel工作

  • 问题内容: 我需要使用Python脚本将PostgreSQL数据库中的表中的某些行导出到.csv文件: 但是当我运行脚本时,我得到了: 有谁知道可能出什么问题或给我小费吗? 问题答案: 该命令不是SQL命令,它是Postgres终端客户端 psql 专用的命令,不能在此上下文中使用。 使用代替,例如:

  • 我正在尝试将JTable导出到Microsoft Excel可用的文件中。 最初,我将数据写入一个文本文件,并将扩展名设置为“.xls” 我们非常感谢任何帮助和洞察力。可能还值得一提的是,tables模型是一个自定义模型。

  • 我有一个JProfiler快照文件(.jps),它是使用脱机分析创建的。 当我试图使用JPexport脚本导出它时,出现以下错误: /opt/jprofiler9/bin$jpexport ~/test。jps热点~/热点。html加载/home/pavan/test。jps JProfiler尚未初始化。请先运行JProfiler可执行文件 请任何人详细说明这意味着什么,以及需要做什么才能成功地