All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.resources.MetricsResource Maven / Gradle / Ivy

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.config.ApiPaths;
import com.hubspot.singularity.metrics.SingularityMetricsContainer;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.tags.Tags;

@Path(ApiPaths.METRICS_RESOURCE_PATH)
@Produces({ MediaType.APPLICATION_JSON })
@Schema(title = "Retrieve metrics from the Singularity scheduler")
@Tags({@Tag(name = "Metrics")})
public class MetricsResource {
  private final MetricRegistry registry;

  @Inject
  public MetricsResource(MetricRegistry registry) {
    this.registry = registry;
  }

  @GET
  @Operation(summary = "Retrieve metrics from this scheduler instance")
  public SingularityMetricsContainer getRegistry() {
    Map 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);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy