private <T extends Metric> MetricImpl toImpl(Metadata metadata, T metric) { switch (metadata.getTypeRaw()) { case COUNTER: return HelidonCounter.create(type.getName(), metadata, (Counter) metric); case GAUGE: return HelidonGauge.create(type.getName(), metadata, (Gauge<?>) metric); case HISTOGRAM: return HelidonHistogram.create(type.getName(), metadata, (Histogram) metric); case METERED: return HelidonMeter.create(type.getName(), metadata, (Meter) metric); case TIMER: return HelidonTimer.create(type.getName(), metadata, (Timer) metric); case INVALID: default: throw new IllegalArgumentException("Unexpected metric type " + metadata.getType() + ": " + metric.getClass() .getName()); } }
break; default: throw new IllegalArgumentException("No definitions for " + scope.getName() + " supported");
void afterBeanDiscovery(@Observes final AfterBeanDiscovery afterBeanDiscovery, final BeanManager beanManager) { addBean(afterBeanDiscovery, MetricRegistry.Type.APPLICATION.name() + "_@Default", MetricRegistry.class, Default.Literal.INSTANCE, applicationRegistry); addBean(afterBeanDiscovery, MetricRegistry.Type.APPLICATION.name(), MetricRegistry.class, new RegistryTypeImpl(MetricRegistry.Type.APPLICATION), applicationRegistry); addBean(afterBeanDiscovery, MetricRegistry.Type.BASE.name(), MetricRegistry.class, new RegistryTypeImpl(MetricRegistry.Type.BASE), baseRegistry); addBean(afterBeanDiscovery, MetricRegistry.Type.VENDOR.name(), MetricRegistry.class, new RegistryTypeImpl(MetricRegistry.Type.VENDOR), vendorRegistry);
void afterValidation(@Observes final AfterDeploymentValidation validation, final BeanManager beanManager) { final InitSigar initSigar = new InitSigar(findTempDir()); initSigar.ensureSigarIsSetup(); if (!initSigar.isValid()) { return; } final MetricRegistry.Type registryType = MetricRegistry.Type.valueOf( System.getProperty("geronimo.metrics.sigar.registry.type", "BASE")); final Set<Bean<?>> beans = beanManager.getBeans(MetricRegistry.class, new RegistryTypeLiteral(registryType)); final MetricRegistry registry = MetricRegistry.class.cast(beanManager.getReference( beanManager.resolve(beans), MetricRegistry.class, beanManager.createCreationalContext(null))); final MicroprofileMetricsAdapter adapter = new MicroprofileMetricsAdapter(registry); registrar = new SigarRegistrar(adapter.registrer(), adapter.unregistrer()); registrar.start(); }
@GET @Produces(MediaType.TEXT_PLAIN) public String getText(@Context final SecurityContext securityContext, @Context final UriInfo uriInfo) { securityValidator.checkSecurity(securityContext, uriInfo); return Stream.of(MetricRegistry.Type.values()) .map(type -> { final MetricRegistry metricRegistry = findRegistry(type.getName()); return prometheus.toText(metricRegistry, type.getName(), metricRegistry.getMetrics()); }) .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append) .toString(); }
private MetricRegistry findRegistry(final String registry) { switch (Stream.of(MetricRegistry.Type.values()).filter(it -> it.getName().equals(registry)).findFirst() .orElseThrow(() -> new WebApplicationException(Response.Status.NOT_FOUND))) { case BASE: return baseRegistry; case VENDOR: return vendorRegistry; default: return applicationRegistry; } }
@GET @Produces(MediaType.APPLICATION_JSON) public Object getJson(@Context final SecurityContext securityContext, @Context final UriInfo uriInfo) { securityValidator.checkSecurity(securityContext, uriInfo); return Stream.of(MetricRegistry.Type.values()) .collect(toMap(MetricRegistry.Type::getName, it -> findRegistry(it.getName()).getMetrics().entrySet().stream() .collect(toMap(Map.Entry::getKey, m -> map(m.getValue()))))); }
void afterValidation(@Observes final AfterDeploymentValidation validation, final BeanManager beanManager) { final MetricRegistry.Type registryType = MetricRegistry.Type.valueOf( System.getProperty("geronimo.metrics.tomcat.registry.type", "BASE")); final Set<Bean<?>> beans = beanManager.getBeans(MetricRegistry.class, new RegistryTypeLiteral(registryType)); final MetricRegistry registry = MetricRegistry.class.cast(beanManager.getReference( beanManager.resolve(beans), MetricRegistry.class, beanManager.createCreationalContext(null))); final MicroprofileMetricsAdapter adapter = new MicroprofileMetricsAdapter(registry); registrar = new TomcatRegistrar(adapter.registrer(), adapter.unregistrer()); registrar.start(); }
public String type() { return type.getName(); }
@Override public Meter meter(Metadata metadata) { return getMetric(metadata, Meter.class, (name) -> HelidonMeter.create(type.getName(), metadata)); }
@Override public Histogram histogram(Metadata metadata) { return getMetric(metadata, Histogram.class, (name) -> HelidonHistogram.create(type.getName(), metadata)); }
@Override public Counter counter(Metadata metadata) { return getMetric(metadata, Counter.class, (name) -> HelidonCounter.create(type.getName(), metadata)); }
@Override public Timer timer(Metadata metadata) { return getMetric(metadata, Timer.class, (name) -> HelidonTimer.create(type.getName(), metadata)); }