我正在(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);
}
}
}
答案 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;
}