【问题标题】:Looking for Matched CachePublicMetrics in spring-boot 2.1.9.release在 spring-boot 2.1.9.release 中寻找匹配的 CachePublicMetrics
【发布时间】:2019-10-09 13:56:13
【问题描述】:

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

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

以下是代码sn-p

        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);
        }
        }
        }

【问题讨论】:

  • @Shailesh 你能检查一下吗。

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


【解决方案1】:

我认为您应该更深入地了解 Spring boot 执行器,一旦您公开所有端点,您可能会找到您正在寻找的东西。 Spring Boot 提供了一堆预定义的端点,下面是 Spring Boot 执行器端点列表 (source)

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

编辑:

如 cmets 中所述,您需要访问 /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;

    }

【讨论】:

  • callicoder.com/spring-boot-actuator 我见过这个。 localhost:8080/actuator/metrics{MetricName}。如何在我的 getData() 中调用此端点以读取给定名称的指标?
  • 是的。他们已经给了。 /actuator/metrics/jvm.memory.max 示例。这个。我应该在我的 getData() 中使用 rest 模板调用我吗
  • 是的,这是一种方式,编辑了我的答案以放置一些代码
  • 是的。我这样做了。但我没有测试过。测试后我会告诉你的
猜你喜欢
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 2018-10-22
  • 2021-08-11
  • 2015-10-05
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多