【问题标题】:Write out Spring Boot metrics to Stdout or aggregator?将 Spring Boot 指标写入标准输出或聚合器?
【发布时间】:2016-03-28 22:45:24
【问题描述】:

我有一个基于 Spring Boot 编写的 java 应用程序,我可以看到通过 /metrics 管理 API 生成的指标。我想过滤正在生成的指标(基于指标前缀)并打印到标准输出或将选定的指标发送到第 3 方聚合器(不是引用的 here

我尝试了answer 建议的代码,但没有将任何指标写入标准输出。这是我添加到我的Application.java 类的内容:

@Bean
@ServiceActivator(inputChannel = "metricsChannel")
    public MessageHandler metricsHandler() {
        return System.out::println;
}

截取预先配置的节奏上的指标以便我可以处理并将它们写入标准输出或将它们发布到聚合器的最佳方法是什么?

谢谢。

【问题讨论】:

标签: spring-boot spring-integration metrics microservices


【解决方案1】:

看起来这是 Spring Boot 中的一个错误:https://github.com/spring-projects/spring-boot/issues/5517

我们必须自己声明这样的事情作为解决方法:

@Bean
public MessageChannel metricsChannel() {
    return new DirectChannel();
}

@Bean
@ExportMetricWriter
public MessageChannelMetricWriter messageChannelMetricWriter() {
    return new MessageChannelMetricWriter(metricsChannel());
}

@Bean
@ServiceActivator(inputChannel = "metricsChannel")
public MessageHandler metricsHandler() {
    return System.out::println;
}

【讨论】:

  • 谢谢@artem。我认为它走得更远,但没有完全输出信息。错误是2016-03-29 09:27:16.924 WARN 11264 --- [ask-scheduler-2] o.s.b.a.m.export.AbstractMetricExporter : Could not write to MetricWriter: class org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'unknown.channel.name'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers ...我想知道哪个是unknown.channel.name?另外,我将在哪里检查以仅输出具有给定前缀的指标?谢谢。
  • 您应该分享您的应用程序。这还不清楚。也许你有一个metricsChannel,但没有metricsHandler bean...
  • 谢谢。我将最新的推送到上面的项目中。我也会跟进metricsHandler 的提示。
  • 好吧,您必须将 @EnableAutoConfiguration@ComponentScan 更改为单个 @SpringBootApplication。那些没有用@Component 标记类,这对于Spring Integration 扫描@ServiceActivator 很重要。
  • 谢谢!我还实现了一个MessageHandler,我可以在其中查看消息的内容并进行下一步。我将工作版本推送到github.com/khoubyari/spring-boot-metrics
猜你喜欢
  • 2012-06-08
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
相关资源
最近更新 更多