在spring-boot 2.1.9.release中寻找匹配的CachePublicMetrics

时间:2019-10-09 13:56:13

标签: spring-boot spring-mvc spring-cache

我正在(spring-boot.1.5.12版本)的一个控制器中使用以下类

在2.1.9春季版本中找不到匹配的类。

以下是代码段

        import org.springframework.boot.actuate.endpoint.CachePublicMetrics;
        import org.springframework.boot.actuate.metrics.Metric;  

        public class CachingController extends CloudRestTemplate {

        @Autowired
        private CachePublicMetrics metrics;

        public @ResponseBody Map<String, Object> getData(@Pattern(regexp=Constants.STRING_VALID_PATTERN, message=Constants.STRING_INVALID_MSG) @PathVariable(required = true) final String name) throws Exception {
        boolean success = false;
        Map<String, Object> m = Maps.newHashMap();
        Collection<Metric<?>> resp = new ArrayList<>();
        Collection<Metric<?>> mets = metrics.metrics();

        for (Iterator<Metric<?>> iterator = mets.iterator(); iterator.hasNext();) {
        Metric<?> met = iterator.next();
        String metName = met.getName();
        logger.debug(metName+":"+met.getValue());

        if(StringUtils.isNotEmpty(metName)
        && metName.indexOf(name) != -1 ){
        resp.add(met);
        }
        }
        }

1 个答案:

答案 0 :(得分:0)

我认为您应该更深入地研究Spring Boot执行器,一旦暴露了所有端点,您可能会找到想要的东西。 Spring Boot提供了一堆预定义的端点,以下是Spring Boot执行器端点(source)的列表

  
      
  • / auditevents:公开当前应用程序的审核事件信息。
  •   
  • / beans:返回应用程序中所有spring bean的列表。
  •   
  • /缓存:提供有关可用缓存的信息。
  •   
  • / health:提供应用程序的健康信息。
  •   
  • / conditions:提供在自动配置期间评估过的条件列表。
  •   
  • / configprops:返回应用程序级别属性的列表。
  •   
  • / info:提供有关当前应用程序的信息。可以在属性文件中配置此信息。
  •   
  • / loggers:显示日志记录配置。此外,可以使用此端点来修改配置。
  •   
  • / headdump:产生一个head dump文件并返回它。
  •   
  • / metrics:返回有关应用程序的各种度量。包括内存,堆和线程信息。但是,此端点不会返回任何指标。同时,它仅返回可用指标的列表,
      指标名称可以在单独的请求中使用以获取相应的详细信息。例如,像这样的/actuator/metrics/jvm.memory.max。
  •   
  • / scheduledtasks:返回应用程序中的计划任务列表。
  •   
  • / httptrace:以请求和响应的形式返回最近100个http交互。包括执行器端点。
  •   
  • / mappings:所有Http请求映射的列表。还包括执行器端点。
  •   

编辑:

如评论中所述,您需要访问 /actuator/metrics/jvm.memory.max ,如果要使用Java进行访问,则可以使用RestTemplate进行调用,需要探索Actuator API ,我写了一个快速程序,可以引用相同的

@Autowired
private MetricsEndpoint metricsEndpoint;

public MetricResponse printJavaMaxMemMetrics() {

        ListNamesResponse listNames = metricsEndpoint.listNames();

        listNames.getNames().stream().forEach(name -> System.out.println(name));

        MetricResponse metric = metricsEndpoint.metric("jvm.memory.max", new ArrayList<>());
        System.out.println("metric (jvm.memory.max) ->" + metric);

        List<AvailableTag> availableTags = metric.getAvailableTags();

        availableTags.forEach(tag -> System.out.println(tag.getTag() + " : " + tag.getValues()));

        List<Sample> measurements = metric.getMeasurements();
        measurements.forEach(sample -> System.out.println(sample.getStatistic() + " : " + sample.getValue()));

        return metric;

    }