package com.hubspot.singularity.resources;
import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricRegistry;
import com.google.inject.Inject;
import com.hubspot.singularity.SingularityService;
import com.hubspot.singularity.metrics.SingularityMetricsContainer;
@Path(MetricsResource.PATH)
@Produces({ MediaType.APPLICATION_JSON })
public class MetricsResource {
public static final String PATH = SingularityService.API_BASE_PATH + "/metrics";
private final MetricRegistry registry;
@Inject
public MetricsResource(MetricRegistry registry) {
this.registry = registry;
}
@GET
public SingularityMetricsContainer getRegistry() {
Map<String, Metric> metrics = new HashMap<>(registry.getMetrics());
// Not an easy way to serialize this particular one since it is a lambda, exclude it for now from the endpoint
metrics.entrySet().removeIf((e) -> e.getKey().contains("ManagedPooledDataSource"));
return new SingularityMetricsContainer(metrics);
}
}